2015-01-22 2 views
-6

так вот мвт код, который я попробовал .. его неполна .. пожалуйста, поправьте меня ..как подсчитать количество слов в предложении в java, используя массив?

import java.util.Scanner; 

public class Q5 { 

    public static void main(String[] args) { 

     Scanner input=new Scanner(System.in); 
     char size; 
     char[] sentence; 
     int vowelcounter=0, wordcounter=0; 
     System.out.print("Please enter a line of text: "); 


     for(int i=0;i<size;i++) 
     { 
      if(sentence[i]=='a' || sentence[i]=='e'|| 
       sentence[i]=='o' || sentence[i]=='i'|| 
       sentence[i]=='u'); 
      { 
       vowelcounter++; 
      } 
      if(sentence[i]==32) 
      { 
       wordcounter++; 
      } 
     } 
     System.out.print("The number of words is: "+wordcounter); 
     System.out.print("The number of vowels is: "+vowelcounter); 
    } 
} 
+1

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

+3

Попробуйте улучшить свой вопрос, прежде всего, на самом деле задавая конкретный вопрос, а не «вот неопределенное требование, вот какой-то неполный код, я не буду говорить вам, что с ним не так». Во-первых, вы захотите пройти через разделы [tour] и [help], чтобы узнать, что представляет собой хороший и полный вопрос. –

+3

Просто голова: у вас есть ';' после вашего первого блока if, что почти наверняка является ошибкой. – Mshnik

ответ

0

Вы можете использовать String.split(). Он разбивает String на array из String объектов на основе разделителя.

String[] sentenceWords = sentence.split(" "); 

Тогда просто проверить размер массива

int wordCount = sentenceWords.length; 

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

for (String s : words) { 

    } 

Затем перебирать каждый символ каждого слова

for (int i = 0; i < s.length(); i++) { 
    char ch = s.charAt(i); 

} 

Затем проверить, если символ является гласной

if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { 
    vowelCount++; 
} 

Полный пример:

public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

public static void main(String[] args) throws Exception { 

    String input = br.readLine(); 
    String[] words = input.split(" "); 
    System.out.println("Words in the setence: " + words.length); 

    int vowelCount = 0; 
    for (String s : words) { 
     for (int i = 0; i < s.length(); i++) { 
      char ch = s.charAt(i); 
      if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { 
       vowelCount++; 
      } 
     } 
    } 

    System.out.println("Number of vowels in sentence: " + vowelCount); 

} 

И когда я вход:

Testing this program 

Я получаю результат:

Words in the setence: 3 
Number of vowels in sentence: 5 
+0

Мне было интересно, можно ли это сделать по-другому .. например, в C++, я бы использовал cin.getline ... Есть ли эквивалент метода getline в java.? –

+0

Вот что значит 'br.readLine();' делает. Вы объявляете читателя контролировать входной поток (в данном случае для консоли), а когда вы вызываете 'br.readLine();' он будет читать следующую строку из входного потока. Если в потоке ничего нет, он будет ждать, пока пользователь ничего не введет в поток –

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