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

时间:2015-01-30 12:34:21

标签: java if-statement ternary-operator

我该怎么做呢,例如if阻止检查条件是true还是false然后执行操作取决于那个条件?

if (check true or false) 
         if false do action
         if true do action

像这样的所有在没有块的同一行中 ,这可能吗?

抱歉我的英文不好

感谢。

7 个答案:

答案 0 :(得分:2)

您可以使用java ternary operator

result = testCondition ? value1 : value2

此语句可以理解为,如果testCondition为真,则将value1的值指定给result;否则,请将value2的值指定给result

简单的例子就是,

minVal = a < b ? a : b;

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

这是另一个使用String

的示例
// result is assigned the value "it's false"
String result = false ? "that was true" : "it's false";

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

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

修改

  

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

不,这是不正确的。

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

考虑这个例子,

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

String message(){
    return "This is returned value";
}

现在看到这段代码,

String answer = false ? "true" : message();

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

<强>输出:

This is returned value

答案 1 :(得分:2)

要将条件语句放在一行上,可以使用三元运算符。但请注意,这只能用于赋值,即如果函数实际返回了某些内容,并且您想将该值赋给变量。

int abs = x > 0 ? x : -1; 

如果你想执行那些不返回任何东西但又有其他副作用的方法,那么三元运算符就不是正确的方法。事实上,它甚至没有编译!

void doThis() {/* do this */}
void doThat() {/* do that */}

(condition) ? doThis() : doThat();  // does not work!

相反,您应该使用普通的if-then-else。它也更容易阅读。

if (condition) {
    doThis();
} else {
    doThat();
}

答案 2 :(得分:1)

max = (a > b) ? a : b;

在逻辑上与

相同
if (a > b) {
    max = a;
} else { max = b; }

答案 3 :(得分:1)

您不能使用三元运算符,因为您无法从Ternary Operator

调用任何 void方法(即不返回任何内容的方法)

因为它不是三元运算符的预期用途。

如果你真的希望在1行中实现它,你可以写:

if (condition) doThisMethod(); else doThatMethod();

答案 4 :(得分:0)

如果你真的需要一个单行程,你可以使用这种语法(称为三元运算符):

  

1> 0? &#34;做行动&#34; :&#34;做其他动作&#34 ;;

一个例子是:

  

字符串结果= x&gt; y? &#34; X&GT; Y&#34; :&#34; y&gt; x&#34;;

但不建议这样做,大多数人都讨厌这种语法,因为如果你在其中级联几个条件,甚至是最糟糕的级联三元运算符,它会变得非常难以理解。

但它有它的用途。

答案 5 :(得分:0)

也许ternary operator可以满足您的需求:

checkIfTrue() ? actionIfTrue() : actionIfFalse();

答案 6 :(得分:0)

您可以使用三元运算符:

if(condition) ? executeForTrue() : executeForFalse();

我猜你几乎可以做你想要的。