2011-06-26 44 views
0

以下是我在一個程序中使用的代碼 - 看過來月變量是整數開關statemt功能不正常,並給我錯誤時,我把休息;

switch(month) { 
case 1: 
case 3: 
case 5: 
case 7: 
case 8: 
case 10: 
case 12: 
    return 31; 
    break; 
case 2: 
    return 28; 
    break; 
case 4: 
case 6: 
case 9: 
case 11: 
     return 30; 
    break; 
default: 
    System.out.println("Invalid month."); 
    return 0; 
} 

出人意料的是,當我使用上述開關構建..它給出一個錯誤說..代碼可達每一個break語句

然後我刪除了所有的break語句,並將新的代碼看起來像這樣的語句之後---

switch(month) { 
case 1: 
case 3: 
case 5: 
case 7: 
case 8: 
case 10: 
case 12: 
    return 31; 

case 2: 
    return 28; 

case 4: 
case 6: 
case 9: 
case 11: 
     return 30; 

default: 
    System.out.println("Invalid month."); 
    return 0; 
} 

現在..刪除break語句後代碼工作得很好..

我的問題是...在switch結構..它是強制性使用break ..否則控制流將繼續..所有的條件都經過測試和執行!對???

那麼,爲什麼在世界上是以前的**語法右面的**版本給了一個錯誤..和修改語法不正確版本上運行得很好..

任何解釋..任何人!

+1

http://stackoverflow.com/questions/2545110/find-the-number-of-days-in-a-month-in-java –

+0

只是爲了不存在混淆,它不是**語法上的在交換機中不使用break語句是不正確的,這是允許的,通常應該編譯時不會出錯。 – 2011-06-26 02:29:26

回答

2

因爲代碼在使用「return」時停止執行。

+0

您只能使用「休息」以防止其他「案件」運行。但是,既然你「返回」了,那麼這個方法中的其他任何東西都無法運行。 –

+1

看到這個,它會幫助解釋。他們顯示的情況下,他們不使用休息,並解釋發生了什麼:http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

+0

謝謝:)它幫助! – nav

1

錯誤消息告訴您,break語句永遠不會執行,因爲它們總是遵循return語句。

switch結構中使用break語句不是強制性的。

1

您不需要break因爲您已經有return。如果你return那麼你永遠不會到達break,這就是爲什麼你得到的錯誤。

0

return完全退出循環,使break無法訪問。

0

中斷不是在開關寄存器中強制的。 ic case你使用return語句它不是必須的。

相關問題