0
votes

Indiquer quelle voyelle se produit le plus dans une chaîne

J'écris un programme en Java qui est censé donner une sortie comme celle-ci:

  • VOWELLES = 8
  • supérieure = 2
  • chiffres = 5
  • Whitespace = 6
  • voyelle que je repère le plus = 4

    Mon code compile et j'avais réussi avec tout sauf déterminer quelle voyelle survient le plus.

    Je ne suis pas sûr de ce que je devrais faire, comptez d'abord combien de fois une voyelle individuelle (comme juste "A") se produit (par opposition au nombre de voyelles totales survenant dans la chaîne). Après avoir trouvé le total de chaque voyelles, je ne sais pas quoi utiliser pour déterminer la voyelle avec la valeur maximale. Une fois que je suis capable d'obtenir ces deux étapes, je ne suis alors pas vraiment sûr de savoir comment produire correctement. Je préférerais accomplir cela avec une déclaration si cependant, je ne sais pas si cela est possible ou non.

    Toute aide / des conseils sera grandement apprécié, voici le code que j'ai écrit: xxx


3 commentaires

J'ai ajouté une réponse. Pouvez-vous s'il vous plaît essayer cela et laissez-moi savoir si cela fonctionne pour vous?


@Nitin Bisht merci beaucoup !!! Je vous dois. C'était la partie difficile, maintenant tout ce que j'ai à faire, c'est comprendre la production (ne devrait pas être trop difficile)


Oui, il doit être modifié de nombreuses façons de regarder mieux.


3 Réponses :


1
votes

Il peut y avoir plusieurs façons. J'écris l'un d'eux. Vous pouvez l'essayer:

// for number of VOWELS
for (int i = 0; i < str.length(); i++)
{
    ch = str.charAt(i);
    ch = Character.toLowerCase(ch);

    // is this a vowel
    if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
    {
        vowels++;
    }

    // which vowel occurs the most
    if (ch == 'a')
        vowelA++;
    else if (ch == 'e')
        vowelE++;
    else if (ch == 'i')
        vowelI++;
    else if (ch == 'o')
        vowelO++;
    else if (ch == 'u')
        vowelU++;

}

maxVowels = Math.max(vowelA, Math.max(vowelE, Math.max(vowelI, Math.max(vowelO, vowelU))));


3 commentaires

Merci beaucoup!! cela a aidé énormément. Maintenant, tout ce que j'ai à comprendre, c'est comment écrire correctement mon système System.out.println


Au lieu d'une chaîne Math.MAX Appels, vous pouvez simplement faire Collections.max (Vowela, Vowele, Voweli, Vowelo, Vowelu)) .


@Freeish vous avez raison. J'ai déjà mentionné qu'il peut y avoir plusieurs façons. C'est aussi l'un d'entre eux.



0
votes

Essayez ce code:

{
   public static void main (String []args)
 {
    Scanner scan = new Scanner(System.in);
    String str = scan.nextLine();

    int vowels = 0, digits = 0, spaces = 0, upper = 0;
    String line = str;
    int max_vowel_count = 0;
    for(int i = 0; i < line.length(); ++i)
    {
        char ch = line.charAt(i);
        if(ch == 'a' || ch == 'e' || ch == 'i'
            || ch == 'o' || ch == 'u') {


            int a_count = line.length() - line.replace("a", "").length();
            int e_count = line.length() - line.replace("e", "").length();
            int i_count = line.length() - line.replace("i", "").length();
            int o_count = line.length() - line.replace("o", "").length();
            int u_count = line.length() - line.replace("u", "").length();

            max_vowel_count = Math.max(a_count, Math.max(e_count, Math.max(i_count, Math.max(o_count, u_count))));

            ++vowels;
        }
        else if( ch >= '0' && ch <= '9')
        {
            ++digits;
        }
        else if (ch >= 'A' && ch <= 'Z'){ 
            ++upper; 
        }
        else if (ch ==' ')
        {
            ++spaces;
        }
    }

    System.out.println("Vowels: " + vowels);
    System.out.println("Digits: " + digits);
    System.out.println("Upper Case: " + upper);
    System.out.println("White spaces: " + spaces);
    System.out.println("Max Vowel Count "+ max_vowel_count);

}


0 commentaires

0
votes

Si vous êtes intéressé par une solution basée sur le flux: xxx

(faisant de type voyelle un énumé serait une amélioration)


2 commentaires

Erreur "La méthode de (int, int, int, int, int, int) est indéfinie pour le jeu de type" sur un ensemble statique privé voyelles = set.of ((int) 'a', (int) ', (int) 'I', (int) 'O', (int) 'u'); doubler.


Ensemble .Of a été ajouté dans Java 9. Si vous utilisez des versions plus anciennes, vous devez créer un objet HASHSET , puis ajouter () tous les éléments individuellement.