2015-02-07 4 views
0

Я пытаюсь создать программу, которая позволяет пользователю вводить слово, тогда оно будет подсчитывать количество гласных и согласных в этом слове и печатать сумму. например: слово «YOURWORD» содержит 3 гласных и 5 согласных.Java считает программу гласных

Поскольку согласная - это просто буква, которая не является гласным, я только сделал проверку программы, если в слове была гласная, а затем количество согласных - это просто количество других букв в слове. Тем не менее, я борюсь с циклом for. Вот мой код:

String word; 
    Scanner myinput = new Scanner(System.in); 

    System.out.println("Please enter a word."); 
    word = myinput.next(); 
    char[] wordc = word.toCharArray(); 

    for(int w = 0;w > word.length();w++;) { 
     if(wordc[w] == 'a' || wordc[w] == 'e' || wordc[w] == 'i' || wordc[w] == 'o' || wordc[w] == 'u') { 

     } 

Как вы можете видеть, я так близко к концу, но я буквально понятия не имеют, что теперь делать. Я новичок в Java, и я проверил синтаксис for loop, но я действительно не знаю, что делать, пожалуйста, помогите.

+1

Это бесконечный цикл. Должно быть 'w

+0

^Чтобы уточнить; технически это не бесконечный цикл, его цикл, который является условным, никогда не выполняется, поэтому никогда не выполняется. Но у него есть потенциал быть бесконечным циклом, если w был создан как нечто большее, чем word.length(), и его нужно изменить. – ryanlutgen

+0

@Vizkos Справа, мое плохое. –

ответ

0

Вы должны определить две переменные int для подсчета. для цикла идет как ниже

3

Попробуйте изменить

for(int w = 0;w > word.length();w++) 

в

for(int w = 0;w < word.length();w++) 

, потому что когда вы устанавливаете w на 0, очевидно, ваш word.length() больше 0, что делает условие в цикле for false. Следовательно, цикл for будет не выполнен даже один раз.

Чтобы подсчитать количество гласных, вы определяете еще одно целое за пределами цикла for и увеличиваете его, когда вы сталкиваетесь с гласным. Таким образом, ваш код должен выглядеть следующим образом:

String word; 
Scanner myinput = new Scanner(System.in); 
System.out.println("Please enter a word."); 
word = myinput.next(); 
//Convert your string to lowercase using toLowerCase() method. 
char[] wordc = word.toLowerCase().toCharArray(); 
int vowels = 0; //This counter will count the vowels. 
for(int w = 0;w < word.length();w++) { 
    if(wordc[w] == 'a' || wordc[w] == 'e' || wordc[w] == 'i' || wordc[w] == 'o' || wordc[w] == 'u') { 
     vowels++; 
    } 
} 
int consonants = word.length() - vowels; 
//Assuming no special characters in your word. 
0
String word; 
Scanner myinput = new Scanner(System.in); 

System.out.println("Please enter a word."); 
word = myinput.next(); 
char[] wordc = word.toCharArray(); 

int vowels = 0; 

for (char w: wordc) { 
    if(w == 'a' || w == 'e' || w == 'i' || w == 'o' || w == 'u') { 
     vowels++; 
    } 
} 

System.out.println("Number of vowels in " + word + " is: " + vowels); 
System.out.println("Number of consonants in " + word + " is: " + (wordc.length - vowels)); 
-2
String word; 
Scanner myinput = new Scanner(System.in); 

System.out.println("Please enter a word."); 
word = myinput.next(); 
char[] wordc = word.toCharArray(); 

int vowel = 0; 
int consonant = 0; 
for(int w = 0;w > word.length();w++;) { 
    if(wordc[w] == 'a' || wordc[w] == 'e' || wordc[w] == 'i' || wordc[w] == 'o' || wordc[w] == 'u') { 
vowel++; 
    }else{ 
// else the Word is Consonant 
    consonant++; 
} 

Попробуйте это: Есть только два случая прямо сейчас ... Одно слово будет гласный или согласный. Так что инструкция else будет работать здесь.

+1

Этот ответ не затрагивает фактическую проблему афера; сам цикл все еще не работает. – ryanlutgen

0

Вот способ подсчета гласных и согласных без использования петель и нескольких условий.

String word = "YOURWORD"; // assuming only letters 

String vowels = word.replaceAll("(?i)[^aeiou]+", ""); // OUO 

int numVowels  = vowels.length(); // 3 
int numConsonants = word.length() - numVowels; // 5 

Как это работает:

В word.replaceAll("(?i)[^aeiou]+", "") вызова мы заменяемого все, что не один из [^aeiou] таким образом оставляя только гласные в возвращаемой строке.

-1
String[] arr = text.split(" "); 
    char elementch = ' '; 

    //looping through string array 
    for(int i=1; i<= arr.length ; i++){ 
     String nextElement = arr[i-1]; 

     int add = 0; 
      //looping through each character in the next element 
      for (char ch: nextElement.toCharArray()) { 
       //checking if ch == to vowels 
       if(ch == 'e'|| ch == 'a' || ch == 'o' || ch == 'u'|| ch == 'i'){ 
        //add counts number of vowels for every string array index 
        add = add +1; 
        elementch = ch; 
        System.out.print(" ' " +elementch + " ' "); 
       }else{ 
        //do nothing 
       } 
      } 
      System.out.println("The number of vowels is "+ add + " in" + " : " + nextElement.toUpperCase()); 
    } 
Смежные вопросы