2015-06-02 26 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; 
} 
相关问题