2016-11-28 85 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

你永远只要求输入一次......也使用字符串的equals方法Java中 –

+0

比较字符串时是否有您使用的环路长度<1的原因吗?这不会遍历整个字符数。也可以看看使用开关盒 –

回答

1

上面分享的代码有几个错误。

首先,你的while循环的条件是phrase != "quit"。这有两个原因是错误的。首先,这不是你如何比较java中的字符串。为此,请参阅this。第二个原因是你并没有改变你的while循环中的变量phrase,所以这将导致无限循环,因为phrase将永远不会“退出”,除非这是用户输入的内容。如果你只需要输入用户一次,我没有看到这个while循环的需要。

你的代码错误的第二个原因是你的for循环中的if语句(查看当前char是什么字符)什么都不做。在这一点上,它们只是空白的代码块。很可能你需要做的是增加适当的元音计数器。

最后,你在你的打印线使用不正确的字符串连接方法。在Java中进行协调的正确方法如下:

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

使用单引号是不正确的;你可以使用,如果你想打印的字母“A”,像这样:

"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(); 
    }  
}