java 元音计数器使用 Switch 方法

标签 java switch-statement

我应该编写一个简单的java应用程序,计算用户输入的字符串中的每个元音并输出每个元音出现的次数。

我不明白为什么我的代码要检查字符串中的每个单词。我为每个单词得到了正确数量的元音。这是我所拥有的:

import java.util.Scanner;

public class VowelAnalyst
     {
//
//

public static void main (String[] args)
{
String userString;
int aCount = 0, eCount = 0, iCount = 0, oCount = 0, uCount = 0;
char vowels;

Scanner scan = new Scanner (System.in);

System.out.println ("enter string:");
userString = scan.nextLine();

for (int count = 0; count < userString.length(); count++)
{

vowels = userString.charAt(count);

    switch (vowels)
    {
    case 'a':
        aCount++;
        break;

    case 'e':
        eCount++;
        break;

    case 'i':
        iCount++;
        break;

    case 'o':
        oCount++;
        break;

    case 'u':
        uCount++;
        break;

    default:
        System.out.println ("Please enter valid string.");

    }

            System.out.println ("a: " +aCount);
            System.out.println ("e: " +eCount);
            System.out.println ("i: " +iCount);
            System.out.println ("o: " +oCount);
            System.out.println ("u: " +uCount);
        }
    }
}

最佳答案

也许您应该将下面的打印语句移出 for 循环,否则它们将在比较每个字符后打印计数:-

System.out.println ("a: " +aCount);
System.out.println ("e: " +eCount);
System.out.println ("i: " +iCount);
System.out.println ("o: " +oCount);
System.out.println ("u: " +uCount);

更新:-

虽然你这样做的方式不错,但是如果你保持 Map<Character, Integer> 会更好。存储每个 Vowel 的计数。您需要将每个字符的初始计数设置为 0 来初始化 Map,然后在读取每个字符时,如果在 Map 中找到匹配项,则只需增加计数即可。

这是一个示例片段:-

// This is `double-braces` initialization. 
// You can rather initialize your Map in a way you are comfortable with
Map<Character, Integer> vowels = new HashMap<Character, Integer>() {
    {
        put('a', 0);
        put('e', 0);
        put('i', 0);
        put('o', 0);
        put('u', 0);
    }
}; // Note the semi-colon here

然后是在 for 循环中从字符串中读取每个字符的代码:-

for (int count = 0; count < userString.length(); count++)
{
    char ch = userString.charAt(count);
    ch = Character.toLowerCase(ch);

    if (vowels.containsKey(ch)) {
        vowels.put(ch, vowels.get(ch) + 1); 
    }
}

System.out.println(vowels);  // Will print each vowels with respective count

关于java 元音计数器使用 Switch 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018361/

相关文章:

java - 将java语言输出转换为Joomla语言输出

cocoa-touch - 实时渲染中的 IBDesignables 和 traitCollection

java - 如何以编程方式使 android 电话响起,就好像它正在接听电话一样?

java 文件重命名()

java - 如何使用多态性在运行时根据实例加载 fragment ?

JavaScript,如何根据变量更改id?

java - 为什么 Java 7 中 String 的 switch 语句比 if else 快?

c++ - "crosses initialization of variable"仅当初始化结合声明时

java - 在我的 tabhost 中强制关闭

java - 将嵌套列表转换为二维数组