解释开关案例程序?

时间:2015-02-10 16:59:56

标签: java

class SwitchDemo
{
    public static void main(String ar[])
    {
        String name="aeiouuu";
        int vo=0,co=0;
        char c[]=name.toCharArray();
        for(int i=0;i<name.length();i++)
        {
            switch(c[i])
            {
                case 'a':case 'e':case 'i':case 'o':case 'u':
                vo++;

                default :
                co++;
                System.out.println("co");
                break;
            }

        }
        System.out.println("Number of vowels are : "+vo);
        System.out.println("Number of consonants are : "+co);
    }
}

程序的输出是

Number of vowels are : 7
Number of consonants are : 7

但我无法理解这个节目,因为所有元音都是可能的元音?

2 个答案:

答案 0 :(得分:5)

如果你把它写成

,可能会更有意义
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    vo++;

                default :
                    co++;
                    System.out.println("co");
                    break;

然后考虑评估switch语句是找到第一个匹配的case,然后继续运行直到块的结尾或者break语句。

所以代码中发生的事情是你增加vo,然后继续评估代码并增加co。为了防止它这样做,你可能应该首先点击break语句。可能类似

                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    vo++;
                    break;

                default :
                    co++;
                    System.out.println("co");
                    break;

答案 1 :(得分:4)

您缺少break语句:

case 'a':case 'e':case 'i':case 'o':case 'u':
   vo++;
   break;//this is what you are missing
   default :

如果你不提供休息,你的默认情况也会被执行,因此它也会增加co变量。