web-dev-qa-db-ja.com

疑問符とは何ですか?とコロン ":"演算子

疑問符「?」の使用に関する2つの質問print関数の括弧内のコロン ":"演算子:それらは何をしますか?また、誰かが彼らのための標準用語を知っていますか、または私が彼らの使用に関するより多くの情報を見つけることができるところで?私はそれらが「if」「else」文に似ていることを読みました。

int row = 10;
int column;
while (row >= 1)
{
    column = 1;
    while(column <= 10)
    {
        System.out.print(row % 2 == 1 ? "<" : "\r>");
        ++column;
    }
    --row;
    System.out.println();
}
116
Deepend

これは 項条件演算子 で、printステートメントだけでなく、どこでも使用できます。単に「三項演算子」と呼ばれることもありますが、 これが唯一の三項演算子ではありません 、最も一般的なものです。

これがウィキペディアの良い例です。

C、Java、JavaScriptの伝統的なif-else構文は、次のように書かれています。

if (a > b) {
    result = x;
} else {
    result = y;
}

これは次のように書き換えることができます。

result = a > b ? x : y;

基本的にそれは形式を取ります:

boolean statement ? true result : false result;

したがって、ブール値のステートメントが真であれば最初の部分が得られ、偽であれば2番目の部分が得られます。

それでも意味がない場合は、これらを試してください。

System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
270
Brendan Long

これはif/else文と同等です

if(row % 2 == 1){
  System.out.print("<");
}else{
  System.out.print("\r>");
}
8
fmucar
a=1;
b=2;

x=3;
y=4;

answer = a > b ? x : y;

answer=4は条件が偽なのでy値を取ります。

疑問符(?)
条件が真の場合に使用する値

コロン(:)
条件が偽の場合に使用する値

3
rbe

たぶんそれはAndroidのための完璧な例かもしれません例えば:

void setWaitScreen(boolean set) {
    findViewById(R.id.screen_main).setVisibility(
            set ? View.GONE : View.VISIBLE);
    findViewById(R.id.screen_wait).setVisibility(
            set ? View.VISIBLE : View.GONE);
}
2
mehmet

また、私が持っていた別の関連した質問への答えを投稿したとしても

a = x ? : y;

と同等です:

a = x ? x : y;

Xがfalseまたはnullの場合、yの値が取られます。

1
moo moo

これは三項演算子であり、簡単な英語では"if row%2 is equal to 1 then return < else return /r"と述べています。

1
Anurag Ramdasan

それらはJavaで唯一のものなので三項演算子と呼ばれます。

If ... else構文との違いは、それらが何かを返すということです。そして、この何かは何でもありえます:

  int k = a > b ? 7 : 8; 
  String s = (foobar.isEmpty ()) ? "empty" : foobar.toString (); 
0
user unknown