内联if语句java,为什么不工作

时间:2013-03-17 12:28:19

标签: java if-statement inline

说明: compareChar返回true或false。 如果为true则设置button的值,如果false则不设置任何内容。

我正在尝试使用:

if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§");
netbeans说:

  

')'除外   ':'例外

我试过这些组合:

if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§");
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : ;
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : 

if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§");
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : ;
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : 

6 个答案:

答案 0 :(得分:54)

语法如下所示:

"your condition"? "step if true":"step if condition fails"

答案 1 :(得分:21)

如果您使用'if'语句,则java中的

(inline if)将无效。正确的语法在以下示例中:

int y = (c == 19) ? 7 : 11 ; 

String y = (s > 120) ? "Slow Down" : "Safe";
System.out.println(y);

你可以看到变量Y的类型与返回值相同......

在你的情况下,最好使用普通的if语句不是内联的,如果它在没有“?”的前一个答案中那么

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");

答案 2 :(得分:18)

三元运算符? :将返回一个值,当您想使用if进行流量控制时,请不要使用它。

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");

可以运作得很好。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

答案 3 :(得分:1)

cond? statementA: statementB

等于:

if (cond)
    statementA
else
    statementB

对于您的情况,您可以删除所有“if”。如果你完全使用if-else而不是?:。不要将它们混合在一起。

答案 4 :(得分:1)

您的案件没有返回值。

getButtons().get(i).setText("§");

In-line-if是三元运算,所有三元运算必须具有返回值。该变量可能是无效的,并且不会返回任何内容,也不会返回变量。例如:

int i = 40;
String value = (i < 20) ? "it is too low" : "that is larger than 20";

对于你的情况,你只需要一个if语句。

if (compareChar(curChar, toChar("0"))) { getButtons().get(i).setText("§"); }

另外请注意,您应该使用花括号使代码更具可读性并声明范围。

答案 5 :(得分:0)

这应该是 (条件)?真实陈述:虚假陈述

省略&#34; if&#34;