在单行中分配和执行 if/else 条件

pet*_*446 3 java if-statement ternary-operator

我该怎么做,例如,if块检查条件是否为truefalse,然后根据该条件执行操作?

喜欢,

if (check true or false) 
         if false do action
         if true do action
Run Code Online (Sandbox Code Playgroud)

像这样的事情在没有块的情况下在同一行中完成,这可能吗?

对不起,我的英语不好

谢谢。

Suf*_*ori 8

您可以使用java 三元运算符

result = testCondition ? value1 : value2
Run Code Online (Sandbox Code Playgroud)

这条语句可以理解为,如果testCondition为真,则赋值value1result;否则,分配的值value2result

简单的例子是,

minVal = a < b ? a : b;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,如果变量a小于bminVal则赋值为a;否则,minVal被赋值为b

这是另一个使用的例子String

// result is assigned the value "it's false"
String result = false ? "that was true" : "it's false";
Run Code Online (Sandbox Code Playgroud)

这个例子会更清楚。它为一个人的性别正确打印称呼:

// if `person.isMale()` then its Mr. else its Ms. 
return = "Thank you " + (person.isMale() ? "Mr. " : "Ms. ") + person.getLastName() + ".";
Run Code Online (Sandbox Code Playgroud)

编辑:

问题:您不能在三元运算符中调用方法。

不,这是不正确的。

你可以在三元运算符内部调用一个方法,只要它返回一个与三元运算符左侧相同类型的值,

考虑这个例子,

让我们创建一个返回String值的方法,

String message(){
    return "This is returned value";
}
Run Code Online (Sandbox Code Playgroud)

现在看到这个代码,

String answer = false ? "true" : message();
Run Code Online (Sandbox Code Playgroud)

这将执行得很好,因为return类型message()和变量类型answer是相同的,即String.

输出:

This is returned value
Run Code Online (Sandbox Code Playgroud)