我无法让这个程序工作,有人可以看看它,并告诉我该怎么做的线索?谢谢!
设计并实现一个从用户读取字符串的应用程序,然后确定并打印每个小写元音(a,e,i,o和u)中出现的字符串数量。每个元音都有一个单独的计数器。还要计算并打印非元素字符的数量。
PROMP,PROELS和OUTPUT的规范:您的代码应使用提示“输入字符串:”。读取输入后,有六行输出,每行输出一个不同的标签:“a:”,“e:”,“i:”,“o:”,“u:”,“other:”in那个命令。每个标签后都是必需的数量。
例如:如果读入“aardvark heebie jeebies”,输出将为:
a: 3
e: 6
i: 2
o: 0
u: 0
other: 12
import java.util.Scanner;
public class VowelAnalyst{
public static void main(String args []){
int a =0, e = 0, x = 0;
int u = 0, o = 0, other = 0;
String text;
Scanner scan = new Scanner(System.in);
System.out.print("enter string: ");
text = scan.nextLine();
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c=='a')
a++;
else if( c=='e')
e++;
else if(c=='i')
x++;
else if(c=='o')
o++;
else if (c=='u')
u++;
else
other++;
}
System.out.println("a: " + a + "\n" +
"e: " + e + "\n" +
"i: " + x + "\n" +
"o: " + o + "\n" +
"u: " + u + "\n" +
"other: " + other);
}
}
答案 0 :(得分:3)
您的if
语句序列无效。有意义的演绎就像是
if (c == 'a') a++;
else if (c == 'e') e++;
...
else other ++;
然而,更好的选择是使用switch语句,如此
switch (c) {
case 'a':
a++;
break;
case 'e':
e++;
break;
case 'o':
o++;
break;
case 'u':
u++;
break;
default:
other++;
break;
}
修好后,我们需要查看您遗漏的内容:所有大写元音目前都计为other
。我们可以加倍条件
if (c == 'a' || c == 'A')
...
或
case 'A':
case 'a':
...
但是有一种更简单的方法:在比较之前将字符串转换为小写。
for (int i = 0; i < text.length(); i++) {
char c = Character.toLowerCase(text.charAt(i));
switch (c) {
...
答案 1 :(得分:3)
除了这一部分,您的代码是正确的:
else if (c != 'a' && 'e' && 'i' && 'o'&& 'u' )
应该这样写:
else if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u')
您可以通过将除{1}}之外的每个if
转换为else if
和最后else if
来更清晰地显示代码,您可以在其中查看是否字符不是任何元音,可以只是else
:
if (c == 'a')
{
a++;
}
else if (c == 'e')
{
e++;
}
else if (c == 'i')
{
x++;
}
else if (c == 'o')
{
o++;
}
else if (c == 'u')
{
u++;
}
else
{
other++;
}
答案 2 :(得分:2)
我会为每个字符
做switch (c)
{
case 'a':
case 'A':
a++;
break;
case 'e':
case 'E':
e++;
break;
case 'i':
case 'I':
i++;
break;
case 'o':
case 'O':
o++;
break;
case 'u':
case 'U':
u++;
break;
default:
other++;
break;
}
它只计算每个元音和辅音。