2013-08-06 107 views
-5

有人可以解釋這段代碼有什麼問題嗎?它對我來說看起來不錯,但它一直說有表達式的非法開始,並且即使它在那裏也是預期的。這個if/while循環有什麼問題?

if (gamestate = 1) { 
    while (life > 0) { 
     if (atk > enemydef) { 
      atk1 = atk - enemydef; 
      enemylife = enemylife - atk1; 
      System.in.println("Enemy health: " + enemylife); 
      System.in.println("Your Health" + life); 
     } 
     if else(atk<enemydef) { 
         enemylife = enemylife; 
     } else { 
      enemylife = enemylife; 
     } 
    } 
else { 
    System.out.println("GAME OVER"); 
} 
+1

@Makoto:你的編輯把while循環的括號放在else之前,而不是像之前那樣在一個單獨的行上。當問題明顯是語法問題時,您不應該進行重要的編輯。 – siride

+0

@Geobits:是的,大括號仍然不存在,但現在由於編輯而變得更加不明顯。 – siride

+0

你們真的很想念的一件事是,它說System.in.println –

回答

2
if(gamestate = 1) 

應該

if (gamestate == 1) 

爲了完整起見,我還指出,你有問題if else。正確的語法是else if

+0

Yoda條件在Java和C#中是不必要的,因爲您不能以這種方式在if語句中分配變量,除非變量是布爾值(在這種情況下,您可能首先排除了相等運算符)。 – siride

+0

@siride是的,你是對的;在這種情況下它們是不必要的。 – arshajii

0

這是else if而不是if else。該生產線

if else(atk<enemydef) 

應該

else if (atk<enemydef) 

還行

if(gamestate = 1) 

有待

if (gamestate == 1) 

=操作分配新建分配FY而==是平等運算符。 gamestate = 1將始終設置gamestate1

3

更改此:

if else (atk < enemydef) 

這樣:

else if (atk < enemydef) 

else if,不if else。而且還解決這個問題:

if (gamestate = 1) 

它改成這樣:

if (gamestate == 1) 

正確的比較操作是==,如果你寫一個=然後進行分配,而不是一個平等的比較。

+0

哦謝謝你。它已經很久了,因爲它是用java編碼的。非常重視。 –

1

這裏有一些問題。

  • if (gamestate = 1)應該是if (gamestate == 1)。單個等號是分配;雙等號是布爾等價比較。

  • if else不是一個有效的表達式。你的意思可能是else if

  • 您是從您的else語句的前面缺少一個支柱。 IntelliJ(這是我用來設置問題/答案的地方)不相信它是它自己的聲明,所以它將它與其他片段混合在一起。