0

初歩的な質問がありますが、実際には答えを思い出せません。

IF\ELSE IF の代わりに Switch Cases を使用するとどうなりますか。すべてのケースが評価されるか、break はスイッチ ケース全体から抜け出し、最初に満たされた条件のみを返します。

つまり、誰かが車、自転車、飛行機を持っているかどうかを確認したい場合はどうでしょう。そして、私の特定のケースでは、誰かがそれらすべてを切り替えて3つすべてをtrueとして返すか、最初のケースのみを返し、休憩のために残りを無視しますか?

ご不便をおかけして申し訳ありません。

ありがとうございました

4

8 に答える 8

2

公式Javaチュートリアルから:

breakステートメントは、囲んでいるswitchステートメントを終了します。

あなたの特定のケースでは、誰かが車、自転車、または飛行機を持っている場合、より複雑なif\elseステートメントを作成する必要があります.

それでも を使用switchしたい場合は、次の操作を実行できます。

switch (possession)
{
    case CAR:
    case BIKE:
    case PLANE:
        doSomething();
    break;
}
于 2013-09-09T09:43:44.350 に答える
1

確かにブレークはfirst break statement、ブレークが見つからない場合、遭遇後にスイッチケースフローを中断し、最初に一致するケースから始まるすべてのステートメントの実行を開始します。ケース内にロジックを実装できます。 if-else を参照してくださいなぜ switch が if よりも速いのか

于 2013-09-09T09:46:24.253 に答える
1

最初のマッチングでブレイクします。あなたの場合に行う最善のことは、if ステートメントで論理演算子を使用することです。

if (hasCar && hasBike && hasPlane)
{
...

}
于 2013-09-09T09:45:25.060 に答える
1

-ステートメントをbreak終了しswitchます。

その上、switch単一の変数を評価します。あなたのケースは私にはもう少し複雑に聞こえます。

于 2013-09-09T09:45:44.963 に答える
0

これを確認するには、新しいスタイルのデータ構造を書き直す必要があるかもしれません。私が考える最も簡単な方法は、ブール配列 (bool[]); を使用することです。

あなたが持っている場合は、あなたの例を続けます

Owner Class

、bool bike、bool car、bool motocycle...プロパティを使用すると、次のように書くことができます

public bool[] ownArray() 

評価できる関数。

これが役立つことを願っています。

于 2013-09-09T09:48:08.087 に答える