首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元音计数码问题

元音计数码问题
EN

Stack Overflow用户
提问于 2013-05-06 15:22:27
回答 3查看 11.3K关注 0票数 0

我很难让这个程序开始工作,有人能看一下它并给我一个关于该做什么的提示吗?谢谢!

设计并实现一个从用户读取字符串的应用程序,然后确定并打印每个小写元音(a、e、i、o和u)在整个字符串中出现的数量。每个元音都有一个单独的计数器。还可以计数和打印非元音字符的数量。 提示、标签和输出的规范:您的代码应该使用提示符"enter:“。在读取输入后,有六行输出,每一行以不同的标签开头:"a:“、"e:”、"i:“、"o:”、"u:“、"other:”。在每个标签之后是所需的计数。 例如:如果读取"aardvark heebie jeebies“,输出将是:

代码语言:javascript
复制
a: 3
e: 6
i: 2
o: 0
u: 0
other: 12

代码语言:javascript
复制
    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);

    }
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-06 15:33:09

除此部分外,您的代码是正确的:

代码语言:javascript
复制
else if (c != 'a' && 'e' && 'i' && 'o'&& 'u' )

它应该写成这样:

代码语言:javascript
复制
else if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u')

您可以通过将您拥有的所有if (第一个除外)转换为一个else if,并将最后一个else if (检查该字符是否为元音)转换为else,从而使代码更加清晰。

代码语言:javascript
复制
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++;
}
票数 3
EN

Stack Overflow用户

发布于 2013-05-06 15:29:49

您的if语句序列无效。有意义的引渡就像

代码语言:javascript
复制
if (c == 'a') a++;
else if (c == 'e') e++;
...
else other ++;

然而,更好的选择是使用开关语句,如下所示

代码语言:javascript
复制
switch (c) {
    case 'a': 
        a++; 
        break;
    case 'e': 
        e++;
        break;
    case 'o': 
        o++;
        break;
    case 'u': 
        u++;
        break;
    default: 
        other++;
        break;
}

修复后,我们需要查看您缺少的内容:所有大写元音目前都被计算为other。我们可以在条件上加倍

代码语言:javascript
复制
if (c == 'a' || c == 'A')
...

代码语言:javascript
复制
case 'A':
case 'a':
...

但是有一种更简单的方法:在比较之前将字符串转换为小写。

代码语言:javascript
复制
for (int i = 0; i < text.length(); i++) {
    char c = Character.toLowerCase(text.charAt(i));
    switch (c) {
    ...
票数 3
EN

Stack Overflow用户

发布于 2013-05-06 15:29:51

我会为每一个字符做

代码语言:javascript
复制
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;
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16401925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档