我该怎么做呢,例如if
阻止检查条件是true
还是false
然后执行操作取决于那个条件?
等
if (check true or false)
if false do action
if true do action
像这样的所有在没有块的同一行中 ,这可能吗?
抱歉我的英文不好
感谢。
答案 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
因为它不是三元运算符的预期用途。
如果你真的希望在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();
我猜你几乎可以做你想要的。