Zwracanie napisu zawierającego większa ilość spółgłosek.

0

Witam ponownie. Mam do zrobienia takie zadanie: Napisz funkcję, która jako argument przyjmuje dwa napisy i zwraca
napis o większej liczbie spółgłosek. Do tej pory zrobiłem tyle

public class Zad8Fun {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the first string");
        String ss = sc.nextLine();
        System.out.println("Enter the second string");
        String sss = sc.nextLine();

        System.out.println("String which have bigger number of constants is: " + consString(ss, sss));

    }


    public static String consString(String s1, String s2) {
        int consonants1 = 0;
        int consonants2 = 0;
        for (int i = 0; i < s1.length() && i < s2.length(); ++i) {
            if (String.valueOf(s1.charAt(i)).matches("[bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]")) {
                consonants1++;
            } else if (String.valueOf(s2.charAt(i)).matches("[bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]")) {
                consonants2++;
            }
        }
        if (consonants1 > consonants2) {
            return s1;
        } else if (consonants1 < consonants2) {
            return s2;
        }
        //return  Nie wiem jak wpisać żeby zwracało stringa który ma większą liczbe spółgłosek
    }

}


 
0

Więcej copypaste! Bo po co zrobić funkcje int countConsonants(String s), lepiej kopiować kod :D

0

Wiem, wiem bieda z nędzą. Idzie mi jak krew z nosa. Ale się nie poddaje i staram się podążać powoli ale do przodu. Drogi Shalomie a jakaś sugestia jak zwrócić String który posiada większą liczbę spółgłosek. Pozdr..

0

Najpierw zgodnie z sugestią @Shalom napisz funkcję która zlicza spółgłoski w danym wyrazie (prawie ja masz) -- a potem wykorzystaj.
(Twoje podejście nie zadziała ).

0
public class Zad8Fun {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the first string");
        String ss = sc.nextLine();
        System.out.println("Enter the second string");
        String sss = sc.nextLine();

        System.out.println("String which have bigger number of constants is: " + whichString(ss, sss));

    }


    public static String whichString(String s1, String s2) {
        int consonants1 = countConsonants(s1);
        int consonants2 = countConsonants(s2);
        if(consonants1 >consonants2){
            return s1;
        }else{
            return s2;
        }
    }

    public static int countConsonants(String s) {
        int consonants = 0;
        for (int i = 0; i < s.length(); ++i) {
            if (String.valueOf(s.charAt(i)).matches("[bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]")) {
                consonants++;
            }
        }
        return consonants;
    }
}

Ok, zrobiłem to w ten sposób.

2

o_O

if countConsonants(s1) > countConsonants(s2):
    return s1
else:
    return s2

Faktycznie tęgi algorytm. Jeśli s1 ma wiecej to zwrócić s1 a jeśli ma mniej to zwróć s2.

1 użytkowników online, w tym zalogowanych: 0, gości: 1