2015-02-10 40 views
-2
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 

,但因爲都是元音它是如何可能我無法理解這樣的計劃?

+6

因爲switch的第一部分沒有「break」。 – 2015-02-10 17:00:55

+0

您需要添加中斷 – Anto 2015-02-10 17:01:44

+1

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – 2015-02-10 17:02:18

回答

5

,如果你把它寫成

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

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

再考慮評估switch說法是找到的第一個匹配case,然後繼續運行,直到塊的任何一個結束它可能使更多一點意義或休息聲明。

那麼代碼中發生的事情是,您增加了vo,然後繼續評估代碼並增加co。爲了防止這種情況發生,您應該首先點擊break聲明。可能類似於

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

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

你缺少break語句:

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

如果你不提供休息,默認情況下也被執行,因此它增加共同變量爲好。