2014-12-03 119 views
0
  1. Errors are illegal start of an expression
  2. error: not a statement
  3. ';' expected

我在takeStix接收關於我如果else語句錯誤()。的Java三元操作員錯誤

private int numStix; 

public int getNumStix() {return numStix;} 

public boolean takeStix(int number) { 
     (number <= 3 && number <= getNumStix()) ? return true : return false; 
} 

回答

6

你不能把語句(如return true)在三元運算符,只值。

所以,你可以把:

return (number <= 3 && number <= getNumStix()) ? true : false; 

但是,你甚至不需要爲這個三元操作符:

public boolean takeStix(int number) { 
    return (number <= 3 && number <= getNumStix()); 
} 
+0

感謝您在清除了 – Rafael 2014-12-03 21:44:35

+0

這是一個Java只能治?我傾向於在我的JavaScript中這樣做,這是一個不好的做法? – Rafael 2014-12-03 21:46:20

1

在你的情況,如@khelwood已經表明,你不需要一個三元的表達。但一般情況下,在return語句使用三元表達式的格式應該是

return boolean_condition ? something : something_else 

例如,

public boolean takeStix(int number) { 
    return number <= Math.min(3, getNumStix()) ? true : false; 
} 
+0

謝謝你,更有意義。 – Rafael 2014-12-03 21:45:08

+0

這是僅限Java的規則嗎?我傾向於在我的JavaScript中這樣做,這是一個不好的做法? – Rafael 2014-12-03 21:48:01

+1

通常,當一個簡單的布爾分配滿足時,避免三元表達式是一種更好的做法。我不是JavaScript的專家,但這個討論可能對你有用:http://stackoverflow.com/questions/19439219/ternary-operator-with-return-statements-javascript – 2014-12-03 21:50:31