21

描述: compareChar 返回真或假。如果为 true,则设置按钮的值,如果为 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("§") : 
4

6 回答 6

88

语法如下所示:

"your condition"? "step if true":"step if condition fails"
于 2013-03-17T12:32:07.317 回答
31

三元运算符是返回一个值,当你想用于流量控制? :时不要使用它。if

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

会工作得很好。

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

于 2013-03-17T12:30:12.303 回答
29

如果您使用 'if' 语句,Java 中的 (inline if) 将不起作用.. 正确的语法在以下示例中:

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

或者

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

如您所见,变量 Y 的类型与返回值相同...

在您的情况下,最好使用正常的 if 语句而不是 inline if,因为它在没有“?”的先前答案中是这样的。

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");
于 2013-06-07T22:48:35.553 回答
2

您的案例没有返回值。

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("§"); }

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

于 2018-06-08T12:32:12.060 回答
1
cond? statementA: statementB

等于:

if (cond)
    statementA
else
    statementB

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

于 2013-03-17T12:30:56.403 回答
-3

这应该是(条件)?真话:假话

省略“如果”

于 2016-12-14T14:13:40.590 回答