142

疑問符「?」の使用に関する 2 つの質問 および印刷関数の括弧内のコロン ":" 演算子: それらは何をしますか? また、誰かがそれらの標準的な用語を知っていますか、またはそれらの使用に関する詳細情報をどこで見つけることができますか? それらは「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();
}
4

7 に答える 7

310

これは、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;

したがって、ブール ステートメントが true の場合は最初の部分が取得され、false の場合は 2 番目の部分が取得されます。

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

System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
于 2012-04-26T15:49:55.687 に答える
10

それは if/else ステートメントと同等です

if(row % 2 == 1){
  System.out.print("<");
}else{
  System.out.print("\r>");
}
于 2012-04-26T15:50:05.273 に答える
3

また、私が持っていた別の関連する質問への回答を投稿しましたが、

a = x ? : y;

以下と同等です。

a = x ? x : y;

x が false または null の場合、y の値が取得されます。

于 2013-02-19T00:11:57.540 に答える
1

これらはJava で唯一の演算子であるため、三項演算子と呼ばれます。

if...else コンストラクトとの違いは、何かを返すことであり、この何かは何でもかまいません:

  int k = a > b ? 7 : 8; 
  String s = (foobar.isEmpty ()) ? "empty" : foobar.toString (); 
于 2012-04-26T15:51:48.820 に答える
1

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

于 2012-04-26T15:52:02.447 に答える