2016-12-13 3 views
0

Я пытаюсь подсчитать слова, используя пробелы в качестве индикатора, когда появляется новое слово.Подсчет слов Java

Мой текущий код возвращает сумасшедшие результаты для wordCounter, но мой vowelCounter работает отлично.

Прошу прощения, если это простой или простой вопрос ... Я только начинаю с Java, и я был бы очень признателен за любую помощь!

System.out.println("Please enter some text: "); 
    String fileContent = input.nextLine().toLowerCase(); 

    int vowelCounter = 0; 
    int wordCounter = 0; 

    for (int i = 0; i < fileContent.length(); i++) { 

     if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u') 
      vowelCounter++; 

    for (int j = 0; j < fileContent.length(); j++) { 

     if (Character.isWhitespace(fileContent.charAt(j))) { 
      wordCounter++; 
     } 
    } 

    } 
    System.out.println("\nVowel Counter: " + vowelCounter); 
    System.out.println("Word Counter: " + wordCounter); 
+0

Вот подсказка: попробуйте положить петлю для проверки пробела над одним для гласных и посмотреть, что произойдет. – GAntoine

ответ

0

У вас есть избыточная петля внутри вашей петли. Просто добавьте вторую if в том же цикле:

for (int i = 0; i < fileContent.length(); i++) { 

    if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u') 
     vowelCounter++; 

    else if (Character.isWhitespace(fileContent.charAt(i))) 
     wordCounter++; 

} 
+0

Awesome !!! Благодаря... – AnthonyVincenzo18

1

Это то, что происходит, когда вы имеете плохой отступа. У вас есть вложенные for-loops вместо 2 отдельных for-loops.

Отдельные ваши петли, как:

for (int i = 0; i < fileContent.length(); i++) { 
    if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u') 
     vowelCounter++; 
} 

for (int j = 0; j < fileContent.length(); j++) { 
    if (Character.isWhitespace(fileContent.charAt(j))) 
     wordCounter++; 
} 

Или их в 1 сингл для цикла:

for (int i = 0; i < fileContent.length(); i++) { 
    if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u') 
     vowelCounter++; 
    else if (Character.isWhitespace(fileContent.charAt(i))) { 
     wordCounter++; 
    } 
} 

Прежде всего, чтобы проверить, что определенные символы (например, гласные) существуют в вашей строке, вы можете сделать это как:

char ch = fileContent.charAt(i); 
if("aeiou".contains("" + ch)) 
0

Возможно, вы захотите добавить 1 к слову word, потому что он подсчитывает количество пробелов. Например: в «яблочном банане» есть 1 пробел, но 2 слова. Кроме того, подсчет пробелов имеет недостатки, например, когда между словами есть два или более последовательных пробелов.

Смежные вопросы