元数计算代码问题

时间:2013-05-06 15:22:27

标签: java

我无法让这个程序工作,有人可以看看它,并告诉我该怎么做的线索?谢谢!

  

设计并实现一个从用户读取字符串的应用程序,然后确定并打印每个小写元音(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);

    }
    }

3 个答案:

答案 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;
}

它只计算每个元音和辅音。