2014-04-20 43 views
-2
public void loseHealth(int amo) { 
      if(airID == Value.airTowerLaser) { 
      amo = Value.damage[0]; 
      } 
      if(airID == Value.airTowerLaser2) { 
      amo = Value.damage[1]; 
      } 
      health -= amo; 
      System.out.print(health); 
     checkDeath(); 
    } 

我有這個,現在它工作。在我的陣列{2,900}中,但他們似乎都會造成同樣的傷害。我一直在通過打印出值來進行一些調試:我已經打印出正確的值,但似乎沒有任何改變。如果我對任何人感到不滿,我表示歉意。如果()語句沒有被調用

我已經做了更多的調試,我發現if語句沒有被調用。我發現這個:

public void loseHealth(int amo) { 
    if(airID == Value.airTowerLaser) { 
      amo = Value.damage[0]; 
      System.out.print(amo); 

    } 
    if(airID == Value.airTowerLaser2) { 
      amo += Value.damage[1]; 
      System.out.print(amo); 
    } 
    health -= amo; 


      // System.out.print(health); 
     checkDeath(); 
    } 

如果我打印外部的if語句打印1不是在數組中聲明。任何幫助都會很棒。謝謝。

+3

它不工作怎麼樣?你有什麼例外嗎? – arghtype

+1

它是否進入任何if語句? –

+0

很多原因。 Param'amo'爲零? 'airID'不是==你列出的任何條件,等等。 –

回答

0

嘗試在JUnit(assertEquals等)中添加單元測試,或者在每個'if'子句(如「here1」,「here2」)中添加簡單的調試語句。如果需要的話還打印出每個變量。

+0

更像是評論而不是答案,儘管我知道你還不能評論。你可能想通過回答更好的提出的問題來建立代表。 –

+0

作爲一個更好的問題,你有什麼建議?更明顯的問題? – Injustice

0

您正在將amo轉換爲public void loseHealth(int amo)並在此處重寫amo = Value.damage[0];。這是沒有任何意義的。我想你必須通過airIDloseHealth-方法。