2011-08-09 21 views
6

私は比較的新しいjavaです。 switchステートメントでは、それぞれcaseの後にbreakステートメントを挿入する必要がありますか?switch文のヘルプ

+3

http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

答えて

5

それぞれのケースの後で中断する必要はありませんが、そうでない場合は、お互いに流れ込みます。時折、休憩を外すことによって、複数のケースをまとめてバンドルしたい場合があります。

3

これは良いことです。さもなければ、次のステートメントも実行されます。

switch(someNumber) { 
case thisCaseMatches: 
    doThat(); 
case thisCaseDoesNotMatch: 
    shouldntExecuteYetItWillBeExecuted(); 
default: 
    alsoWillbeExecuted(); 
} 
2

意味論的にはい。そうしないと、最初に一致した後のすべてのcase文が実行されます。

7

いいえ、必要はありません。ただし、breakステートメントを省略すると、ブロック内の残りのステートメントはすべて、テストされているcaseの値にかかわらず実行されます。

これは、次のコードのように、時には望ましくない結果を生むことができます。

switch (grade) { 
    case 'A': 
     System.out.println("You got an A!"); 
     //Notice the lack of a 'break' statement 
    case 'B': 
     System.out.println("You got a B!"); 
    case 'C': 
     System.out.println("You got a C."); 
    case 'D': 
     System.out.println("You got a D."); 
    default: 
     System.out.println("You failed. :("); 
} 

あなたが「A」にgrade変数を設定した場合、これはあなたの結果のようになります。

You got an A! 
You got a B. 
You got a C. 
You got a D. 
You failed. :(
3

あなたがやりますステートメントをreturnなどで終了していない場合は、

2

各ステートメントの後に改行を入れることをお勧めします。

あなたは強制されていません。

しかし、あなたがswitch文をカスケードした、つまりより多くの条件が一致する可能性があり、時には論理エラーにつながる可能性があります。

しかし、カスケード文がコードを最適化し、コードを少なく書くことができると考える人がいます。

+0

「良い習慣」ではなく、意味的に必要ですか? –