疑問符 ( ?
) が Java で何を表しているのかわかりません。Nim ゲームという小さなプログラムを実行していました。助けを求めて本を探していて、この声明を見ました:
int pinsToTake = (min >= 2) ? 2 : 1;
私はそれを理解していません、何を?
表すのでしょうか、それはif文と関係がありますが、変数に入れますか? そして、:
それは「他の」ものになることができますか?(私が今言ったことは非常に誤解を招く可能性があります)
疑問符 ( ?
) が Java で何を表しているのかわかりません。Nim ゲームという小さなプログラムを実行していました。助けを求めて本を探していて、この声明を見ました:
int pinsToTake = (min >= 2) ? 2 : 1;
私はそれを理解していません、何を?
表すのでしょうか、それはif文と関係がありますが、変数に入れますか? そして、:
それは「他の」ものになることができますか?(私が今言ったことは非常に誤解を招く可能性があります)
someval = (最小 >= 2) ? 2:1;
これは三項演算子と呼ばれ、 として使用できますif-else
。これはと同等です
if((min >= 2) {
someval =2;
} else {
someval =1
}
詳細と使用方法については、このチュートリアルに従ってください。
これは条件演算子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 の両方が異なる型である場合、一方は他方の型 参照と互換性がある(キャスト可能である)必要があります
それが三項演算子です。詳細については、 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!"
;になります。
It's called the Ternary If operator, it's just short-hand for an if...else
"? :" 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
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 つの項を取る三項演算子です。
ブール式? Expr1 : Expr2
BooleanExpression が評価されます。true の場合、式全体の値は Expr1 です。false の場合、式全体の値は Expr2 です。
したがって、if ステートメントと同じ種類の目的を果たしますが、ステートメント全体ではなく用語です。つまり、ステートメント全体を使用できない場所に埋め込むことができます。