12

疑問符 ( ?) が Java で何を表しているのかわかりません。Nim ゲームという小さなプログラムを実行していました。助けを求めて本を探していて、この声明を見ました:

int pinsToTake = (min >= 2) ? 2 : 1;

私はそれを理解していません、何を?表すのでしょうか、それはif文と関係がありますが、変数に入れますか? そして、:それは「他の」ものになることができますか?(私が今言ったことは非常に誤解を招く可能性があります)

4

9 に答える 9

30

someval = (最小 >= 2) ? 2:1;

これは三項演算子と呼ばれ、 として使用できますif-else。これはと同等です

if((min >= 2) {
   someval =2;
} else {
   someval =1
}

詳細と使用方法については、このチュートリアルに従ってください。

于 2012-08-17T12:50:34.277 に答える
8

これは条件演算子ternary operatorとも呼ばれ、look参照があります。

お気に入りObject bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);

例えば。operand1 ? operand2 : operand3

  • operand1 が true の場合、operand2 が返され、それ以外の場合、operand3 が返されます
  • operand1 はブール型でなければなりません
  • operand1 は、ブール型に評価される式にすることができます
  • operand1 と operand2 は、プロモート可能な数値型またはキャスト可能なオブジェクト参照であるか、null である必要があります
  • operand2 または operand3 のいずれかがバイトで、もう一方が short の場合、返される値の型は short になります。
  • operand2 または operand3 のいずれかが byte、short、または char であり、もう一方が他のオペランドの範囲内に収まる定数 int 値である場合、返される値の型は、もう一方のオペランドの型になります。
  • それ以外の場合は、通常の 2 進数の昇格が適用されます
  • operand2 または operand3 のいずれかが null の場合、戻り値の型はもう一方のオペランドの型になります
  • operand2 と operand3 の両方が異なる型である場合、一方は他方の型 参照と互換性がある(キャスト可能である)必要があります
于 2012-08-17T12:50:40.880 に答える
4

それが三項演算子です。詳細については、 Oracle のドキュメントを確認してください。簡単に言うと、これは 1 行で実行でき、メソッド内で使用して変数値を定義できる if-else ステートメントです。

構文:

boolean_expression ? do_if_true : do_if_false;

if-else ステートメントによる並列処理:

if(boolean_expression)
    //do_if_true;
else 
    //do_if_false;

do_if_trueとでは 1 行のコードしか実行できないため、括弧は意図的に使用しませんでしたdo_if_false

使用例:

boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";

これは、ブール変数が true に評価さsomeStringれるため、次のように設定されます。一方、次の式をネストできます。"Hello World!"hello

boolean hello = true;
boolean world = false;

String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";

この場合、挨拶の値は"Hello Stranger!";になります。

于 2012-08-17T12:59:21.493 に答える
4

その意味は:

if(min >= 2) 
   someval =2;
else 
   someval =1

三項演算子と呼ばれる このJavaのも参照してください

于 2012-08-17T12:52:31.463 に答える
1

It's called the Ternary If operator, it's just short-hand for an if...else

于 2012-08-17T12:51:30.927 に答える
0

"? :" is a ternary operator equivalent to an if else statement.

In your example:

   pinsToTake = (min >= 2) ? 2 : 1 

if min >= 2 then assign 2 to pinsToTake, else assign 1

于 2012-08-17T12:51:48.153 に答える
0
max = (a > b) ? a : b;

(a > b) ? a:b; a または b の 2 つの値のいずれかを返す式です。
条件 (a > b) がテストされます。true の場合、最初の値 a が返されます。false の場合、2 番目の値 b が返されます。
どちらの値が返されるかは、条件テスト (a > b) によって異なります。条件は、ブール値を返す任意の式にすることができます。

于 2012-08-17T12:52:05.837 に答える
0

これは条件演算子と呼ばれます。これがその仕組みです。min が 2 以上の場合、? の後の最初の値 つまり、ここでは 2 が対応する変数に割り当てられます。それ以外の場合、ここでは 1 である 2 番目の値が割り当てられます。

于 2012-08-17T12:52:07.317 に答える
0

このリンクは、必要なすべてを教えてくれます。

アーカイブのための要約:

これは条件演算子と呼ばれます。これは、次の 3 つの項を取る三項演算子です。

ブール式? Expr1 : Expr2

BooleanExpression が評価されます。true の場合、式全体の値は Expr1 です。false の場合、式全体の値は Expr2 です。

したがって、if ステートメントと同じ種類の目的を果たしますが、ステートメント全体ではなく用語です。つまり、ステートメント全体を使用できない場所に埋め込むことができます。

于 2012-08-17T12:53:26.103 に答える