2016-11-28 2 views
-1

для школы Я должен сделать сканер, который сможет принимать строковый ввод и подсчитывать количество гласных как 1 "a" и т. Д. Моя проблема в том, что когда я ввожу строку, это не будет пройдите через петли, и я могу просто постоянно вводить и вводить ничего не делает. (Кстати, я использую BlueJ для кодирования). Спасибо за любую помощь!Java код не обрабатывается вход

package VowelCounter; 

/** 
* Description: 
* Author: Jack Cannon 
* Date: 11/15/16 
*/ 

import java.util.Scanner; 
public class VowelCounter 
{ 
public static void main(String [] args) 
{ 
    Scanner input = new Scanner(System.in); 
    //Prompt the user to enter a phrase 
    System.out.println("Type in a sentence."); 
    String phrase = input.nextLine(); 
    //as long as the string isn't "quit", 
    //count the vowels in the string. 
    int length = phrase.length(); 
    while(phrase != "quit") 
    { 
     int a = 0; 
     int e = 0; 
     int i = 0; 
     int o = 0; 
     int u = 0; 
     for(int c = 0; length < 1; length++) 
     { 
      char vowels = phrase.charAt(c); 
     if(vowels == 'a') 
     { 
     } 
     else if(vowels == 'e') 
     { 
     } 
     else if(vowels == 'i') 
     { 
     } 
     else if(vowels == 'o') 
     { 
     } 
     else if(vowels == 'u') 
     { 
     } 
     } 
    }  
    System.out.println("There are " + 'a' + "a's"); 
    System.out.println("There are " + 'e' + "e's"); 
    System.out.println("There are " + 'i' + "i's"); 
    System.out.println("There are " + 'o' + "o's"); 
    System.out.println("There are " + 'u' + "u's"); 
    //print out the count of the vowels for this string.  
    //prompt the user for another phrase. 
    } 
    } 
+1

вы только когда задайте один раз ... также использовать строку равно метод при сравнении строк в Java –

+0

есть какая-либо причина вы используете длину <1 в цикле? этот wont цикл через все количество символов. Также, возможно, посмотрите на использование корпуса коммутатора –

ответ

1

Есть несколько вещей, которые не соответствуют коду, который вы использовали выше.

Прежде всего, ваш цикл while имеет состояние phrase != "quit". Это неправильно по двум причинам. Первое заключается в том, что это не так, как вы сравниваете строки в java. Для этого см. this. Вторая причина заключается в том, что вы никогда не меняете переменную phrase внутри цикла while, так что это приведет к бесконечному циклу, потому что phrase никогда не будет «завершен», если только это не то, что пользователь вводит. Если вам нужен только ввод из пользователь один раз, я не вижу необходимости в этом цикле while.

Вторая причина, по которой ваш код неверен, заключается в том, что инструкции if в вашем цикле for (чтобы увидеть, какой символ является текущим символом) ничего не делают. На данный момент это всего лишь пустые блоки кода. Скорее всего, что вам нужно сделать, это увеличить соответствующий счетчик гласных.

И, наконец, в строках печати используется некорректный метод конкатенации строк. Правильный способ конкатенации в Java состоит в следующем:

"There are " + a + "a's" // a = 1 
=> "There are 1 a's" 

Использование одиночных кавычек неверно; вы бы использовать, что, если вы хотите напечатать букву «а», вот так:

"There are a a's" 
0

Это должно исправить вашу проблему, я только добавил 2, если операторы в цикле, вы можете добавить все остальное.

public static void main(String [] args){ 
    Scanner input = new Scanner(System.in); 
    //Prompt the user to enter a phrase 
    System.out.println("Type in a sentence."); 
    String phrase = input.nextLine(); 
    //as long as the string isn't "quit", 
    //count the vowels in the string. 
    int length = phrase.length(); 
    int a = 0; 
    int e = 0; 
    int i = 0; 
    int o = 0; 
    int u = 0; 
    while(!phrase.equals("quit")){ 
     for(int c = 0; c<length; c++){ 
      char vowels = phrase.charAt(c); 
      if(vowels == 'e'){ 
       e++; 
      } 
      else if(vowels == "o"){ 
       o++; 
      } 
     } 
     System.out.println("There are " + a + "a's"); 
     System.out.println("There are " + e + "e's"); 
     System.out.println("There are " + i + "i's"); 
     System.out.println("There are " + o + "o's"); 
     System.out.println("There are " + u + "u's"); 
     System.out.println("enter another sentence"); 
     phrase = input.nextLine(); 
    }  
} 
Смежные вопросы