1

一致するケースを見つけた後、なぜスイッチが壊れないのかという質問に関する理由について、私はすでにstackoverflowで検索しました。

たとえば、サイコロをシミュレートするコードをいくつか書きました。スローごとに、統計上の理由からカウントアップします (1、... = int)。

switch (actualThrow) {
case (1): one++; 
case (2): two++; 
case (3): three++; 
case (4): four++;
case (5): five++; 
case (6): six++; 
}

私のスローが 3 の場合、case(3)-case(6) がチェックされることは知っています (なぜcaseステートメントの後にブレークが必要なのですか? ) 。明らかに、次のケースはチェックされているようですが、条件が満たされていないにもかかわらず実行されます。break;

4

2 に答える 2

5

次のシナリオを想像してください。

switch(trafficLight.state) {
    case GREEN:
        car.drive();
        break;
    case YELLOW:
        car.drive();
        break;
    case RED:
        car.stop();
        break;
}

GREEN と YELLOW の両方が同じことをするので、ちょっと無駄に思えます。Java を使用すると、複数の条件が同じアクションを取るように統合できます。

switch(trafficLight.state) {
    case GREEN:
    case YELLOW:
        // Now both GREEN and YELLOW will use this code
        car.drive();
        break;
    case RED:
        car.stop();
        break;
}

より少ないコードで同じ効果。それで全部です。これは単純なケースです。これを使用する方法は他にもありますが、それほど明白ではなく、悪用されやすいものです。

于 2013-06-07T20:33:14.663 に答える
0

switch-case ステートメントを解析する場合、各ケースは単なるラベルです。大文字と小文字が一致するものがある場合は、ブレークまたはステートメントの終わり (a ) が見つかるまで通過します}

これは、Java オペコード (基本的にはアセンブリ コード) に似ています。ラベルを使用してジャンプします。それに加えて、それらは実際にはコード内で目的を果たしません。

于 2013-06-07T20:34:13.323 に答える