Java代码没有处理输入
问题描述:
对于学校我必须制作一个扫描器,它能够接受字符串输入并计算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.
}
}
答
上面分享的代码有几个错误。
首先,你的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"
答
这应该可以解决你的问题,我只加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();
}
}
你永远只要求输入一次......也使用字符串的equals方法Java中 –
比较字符串时是否有您使用的环路长度