1

if3 つの数値がそれぞれ 20 より大きいかどうかをチェックするステートメントを作成しようとしています (たとえば)。

これは私がうまくいくと思ったものです:

x = 30;
y = 40;
z = 60;

if ((x&y&z) > 20) {
    System.out.println("true");
}

残念ながら、そのようには機能しません。誰でも私を助けることができますか?

注:私はあなたができることを知っています

if (blabla && blabla && blabla) {

私はちょうどより速い方法が欲しいです。

4

3 に答える 3

0

あなたが書いたステートメントは意味がありません.3つのうちどれが大きいかを決定するために整数を & 記号で実際に接続することはできないからです. (意図的にビットレベルで作業している場合を除きますが、そうではないと思います)。

単一のブール式 (つまり、 > を 1 回だけ使用) にしたい場合は、次のようにすることをお勧めします。

if (Math.min(x, Math.min(y,z)) > 20){ ... }

それが3つの個別のブール値よりもどれだけ短いかはわかりません。

編集:言い忘れましたが、これはもちろん、実行時間の点で3つのブール値よりもはるかに効率的ではありません。ただし、必要な3つの整数を比較するだけで、それがどれほど効率的であるかを気にしない場合(実際には、ほとんどの場合違いが見られるわけではないため)、これは機能します。

編集 2: 最初の文の意味を明確にしました。

于 2013-06-24T19:54:37.580 に答える