【问题标题】:whats the '?' in code [duplicate]什么是'?在代码中[重复]
【发布时间】:2023-03-03 16:45:02
【问题描述】:

有人能解释一下这些代码吗?为什么里面有?

package course.examples.theanswer;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TheAnswer extends Activity {

public static final int[] answers = { 42, -10, 0, 100, 1000 };
public static final int answer = 42;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.answer_layout);

    TextView answerView = (TextView) findViewById(R.id.answer_view);


    int val = findAnswer();
    String output = (val == answer) ? "42" : "We may never know";
    answerView.setText("The answer to life, the universe and everything is:\n\n"
                    + output);
}

private int findAnswer() {
    for (int val : answers) {
        if (val == answer)
            return val;
    }
    return -1;
}
}

【问题讨论】:

标签: java android ternary-operator


【解决方案1】:

它的条件/三元运算符。

String output = (val == answer) ? "42" : "We may never know";

实际上等同于:

if(val==answer)
{
 output = "42" 
}

else
{
output = "we may never know"
}

【讨论】:

【解决方案2】:

这是一个三元运算符..

这一行:

String output = (val == answer) ? "42" : "We may never know";

和这个是一样的:

String output;
if (val == answer) {
  output = "42";
} else {
  output = "We may never know";
}

它通常用于简单的条件和赋值......单行。

【讨论】:

    【解决方案3】:

    ?:if-then-else 行为的运算符

    (val == answer) ? "42" : "We may never know";
    

    这意味着

    if(val==answer) {
        output = "42"
    } else { 
         output = "We may never know";
    } 
    

    【讨论】:

    • +1 用于使用花括号。
    【解决方案4】:

    如果你指的是这一行:

    String output = (val == answer) ? "42" : "We may never know";
        answerView.setText("The answer to life, the universe and everything is:\n\n"
                        + output);
    

    ? 是 (if.​​..then...else) 的缩写形式。

    if (val == answer) then output = "42" else output = "We may never know"; answerView.setText("生命、宇宙和一切的答案是:\n\n" + 输出)

    【讨论】:

      【解决方案5】:

      在这条线上

      String output = (val == answer) ? "42" : "We may never know";
      

      那个?代表三元运算符:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

      如果 val == answer 为真,则分配给输出的值将为“42”。如果它等于 false,它将被分配“我们可能永远不会知道”

      val = answer;
      ...
      String output = (val == answer) ? "42" : "We may never know";
      System.out.println(output);
      

      会输出:

      42

      而:

      val = answer + 1;
      ...
      String output = (val == answer) ? "42" : "We may never know";
      System.out.println(output);
      

      会输出:

      我们可能永远不会知道

      【讨论】:

        【解决方案6】:

        这称为Ternary operator。这是if-else 声明的一种替换。

        (Condition) ? {if true execute this} : {else do this}
        

        【讨论】:

        • {if true execute this} : {else do this} 它不只是执行,它分配
        猜你喜欢
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多