14

コンパイラが私に言っているのはなぜですか:

互換性のないタイプ:

必須:ブール値

見つかった: Int

ケース 0 とケース 1 の下


例えば:

    public void test(boolean isOn){
    switch (isOn){
        case 0:
            if (isOn){
                System.out.println("its on");
            }
            break;
        case 1:
            if (!isOn){
                System.out.println("its off");
            }
            break;
        default:
            System.out.println("I don't know!");
    }

}

ドライバークラス:

Club me = new Club();
me.test(true);
4

10 に答える 10

5

ブール値を 1 と 0 の数値に変換するだけです。

public void test(boolean isOn){
    int trueOrFalse;
    if(isOn == true){
      trueOrFalse = 1;
    }else{
      trueOrFalse = 0;
    }
    switch (trueOrFalse){
        case 1:
            if (isOn){
                System.out.println("its on");
            }
            break;
        case 0:
            if (!isOn){
                System.out.println("its off");
            }
            break;
        default:
            System.out.println("I don't know!");
    }
}
于 2017-07-07T12:31:36.767 に答える
2

エラーが明確に述べているように、数値はブール値ではありません。

あなたが欲しいtruefalse

于 2013-10-13T22:51:40.330 に答える
0

これは、1 と 0 が暗黙的に true と false との間で変換される C++ ではありません。ブール値をオンにすることも、できたとしても時間の無駄です。単純な if/else ステートメントを記述するか、構文を使用するだけ? :です。

于 2013-10-14T03:00:39.170 に答える
0

Java では、switch は整数リテラルと、char などの整数リテラルに昇格できる可能性のあるリテラルでのみ機能します。

さらに、Java のブール型には、true または false の 2 つの値しかありません。これは、true がゼロ以外の任意の値で、false がゼロである C/C++ の状況とは異なります。

さらに、あなたのコードは少し冗長です

于 2019-01-27T13:18:30.343 に答える