疑問符が何なのかわかりません(?
)Javaの略で、私は小さなプログラム、Nim-gameをやっていた。助けを求めて本を探していて、この声明を見ました:
int pinsToTake = (min >= 2) ? 2 : 1;
私はそれを理解していません、何が?
表現、ifステートメントと関係があるかもしれませんが、変数に入れますか?そしてその :
何か「他の」ことができますか? (私が今言ったことは非常に誤解を招く可能性があります)
someval =(min> = 2)? 2:1;
これは三項演算子と呼ばれ、if-else
として使用できます。これはと同等です
if((min >= 2) {
someval =2;
} else {
someval =1
}
詳細と使用法については、これに従ってください チュートリアル 。
その_ternary operator
_は条件演算子とも呼ばれ、外観は 参照
Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);
のように
例えば。 _operand1 ? operand2 : operand3
_
- オペランド1が真の場合はオペランド2が返され、そうでない場合はオペランド3が返されます。
- operator1はブール型である必要があります
- operator1は、ブール型に評価される式にすることができます
- オペランド1およびオペランド2は、プロモート可能な数値型またはキャスト可能なオブジェクト参照であるか、nullである必要があります。
- オペランド2またはオペランド3の一方がバイトでもう一方がショートの場合、戻り値のタイプはショートになります
- オペランド2またはオペランド3の一方がbyte、short、またはcharであり、もう一方が他のオペランド範囲内に収まる定数int値である場合、戻り値の型は他のオペランドの型になります
- それ以外の場合は、通常の2進数の昇格が適用されます
- オペランド2またはオペランド3の一方がNULLの場合、戻り値のタイプはもう一方のオペランドのタイプになります。
- オペランド2とオペランド3の両方が異なるタイプである場合、それらの1つは他のタイプと互換性がある(キャスト可能)必要があります 参照
それは三項演算子です。 詳細については、Oracleのドキュメントを確認してください 。簡単に言うと、これはif-elseステートメントであり、1行で実行でき、メソッド内で使用したり、変数値を定義したりできます。
構文:
boolean_expression ? do_if_true : do_if_false;
If-elseステートメントとの並列処理:
if(boolean_expression)
//do_if_true;
else
//do_if_false;
do_if_true
とdo_if_false
では1行のコードしか実行できないため、意図的に角かっこを使用しませんでした。
使用例:
boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";
これにより、ブール変数someString
がtrueと評価されるため、hello
が"Hello World!"
として設定されます。一方、次の式をネストできます。
boolean hello = true;
boolean world = false;
String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";
この場合、あいさつは値として"Hello Stranger!"
;になります。
Ternary If演算子 と呼ばれ、if...else
の省略形です。
「?:」は、ifelseステートメントと同等の3項演算子です。
あなたの例では:
pinsToTake = (min >= 2) ? 2 : 1
min> = 2の場合は、pinsToTakeに2を割り当て、それ以外の場合は1を割り当てます。
max = (a > b) ? a : b;
(a> b)? a:b; aまたはbの2つの値のいずれかを返す式です。
条件(a> b)がテストされます。 trueの場合、最初の値aが返されます。 falseの場合、2番目の値bが返されます。
返される値は、条件付きテストに依存します、a> b。条件は、ブール値を返す任意の式にすることができます。
これは条件演算子と呼ばれます。これがその仕組みです。 minが2以上の場合、?の後の最初の値つまり、ここでは2が対応する変数に割り当てられます。そうでない場合、ここで1である2番目の値が割り当てられます。
このリンク 必要なものがすべて表示されます。
アーカイブのための要約:
これは条件演算子と呼ばれます。これは、次の3つの用語を使用する三項演算子です。
BooleanExpression? Expr1:Expr2
BooleanExpressionが評価されます。 trueの場合、式全体の値はExpr1です。 falseの場合、式全体の値はExpr2です。
したがって、ifステートメントと同じ種類の目的を果たしますが、ステートメント全体ではなく用語です。つまり、ステートメント全体を使用できない場所に埋め込むことができます。