2015-06-01 43 views
-4

我有一些語句在一個過程是這樣的:雖然聲明沒有正文?

while(x + ++flips < 8 && board[x + flips][y] == opponent); 

的(標準的「甲骨文」)編譯器返回的錯誤:「雖然聲明中沒有正文」這是語言規範所要求的還是編譯器特定的?有什麼黑客我可以用來讓這個工作或我堅持重寫它?

+0

我不知道,會追加'while(..){};'也許工作? – displayname

+0

添加一個正文 - 「{/ *沒有任何操作* /}」 - 關閉它。如果這是一個*錯誤*(可能只是n00bs)或一致性問題,這是值得商榷的。 – usr2564301

+1

[當我嘗試時,一個非常相似的循環工作。](http://ideone.com/LDfLbd)您確定您在實際代碼中的正確位置上有分號嗎? – user2357112

回答

1

只需添加一個空的正文。像這樣while(x + ++flips < 8 && board[x + flips][y] == opponent){}

+6

分號應該已經足夠作爲一個身體。 [JLS](https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.12)允許,並且在我嘗試時編譯正常。 – user2357112

6

您已經發布compiles fine when I try it的代碼,並允許JLS section 14.12一個空的語句作爲while循環體:

WhileStatement: 
    while (Expression) Statement 

Statement: 
    StatementWithoutTrailingSubstatement 
    ... 

StatementWithoutTrailingSubstatement: 
    Block 
    EmptyStatement 
    ... 

EmptyStatement: 
    ; 

最有可能的,你的實際代碼有一個錯字。