2015-06-02 23 views
-6

我有類Sector作爲類Sector的屬性(它是一對座標),我試圖讓方法運行決定一個玩家是否可以改變部門與否,我得到一個錯誤,說無效方法不能返回一個值,我可以使用什麼方法?因爲布爾也不能返回它(順便說一下,有沒有其他錯誤或編譯的警告)Java如何在方法中返回一個值

public class Movement extends Turn { 

    public Movement (Player player, Sector finalSector, Map map){ 
     this.esegui(player,finalSector,map); 


    } 
    public void run(Player player, Sector finalSector, Map map){ 
     if(map.getMatrice()[finalSector.getX()][finalSector.getY()]!=0){ 
      if(finalSector.getX()==player.getSector().getX()){ 
       if(finalSector.getY()==player.getSector().getY()+1|| 
         finalSector.getY()==player.getSector().getY()-1){ 
//void methods cannot return a value 
         return player.setSector(finalSector); 
        } 
      } 
      } 

    } 

    } 
+0

你的'run'方法應該返回'player.setSector(finalSector)'返回的任何類型。 – Eran

+0

player.setSector返回什麼?就像伊蘭說的那樣,因爲這就是你試圖返回的東西,所以你需要返回那種類型。 –

+0

如果你的'run'方法應該返回移動成功,它應該返回'boolean'。所以如果你的'player.setSector(...)'方法也返回一個'boolean'來表示移動成功,那麼你可以返回這個方法調用的結果。 你能給我們額外的信息,你的'player.setSector(...)'方法返回什麼,如果你使用運行返回結果? – DrunkenPope

回答

0

的probleme是你的邏輯,

player.setSector(finalSector); 

不到風度返回一個值,這是一個setter方法,試試這個:

public boolean run(Player player, Sector finalSector, Map map){ 

if(map.getMatrice()[finalSector.getX()][finalSector.getY()]!=0){ 

    if(finalSector.getX()==player.getSector().getX()){ 

     if(finalSector.getY()==player.getSector().getY()+1 
      || finalSector.getY()==player.getSector().getY()-1){ 
       return true; 
       // return player.setSector(finalSector); no need to 
     } 
    } 
} 
return false; 
} 
相關問題