2015-06-02 2 views
-6

У меня есть класс Player, который имеет сектор как атрибут из класса Sector (это пара координат), я пытаюсь запустить метод, который решает, может ли игрок изменить сектор или нет, и я получаю сообщение о том, что методы void не могут вернуть значение, какой метод я могу использовать? потому что логическое не может вернуть его либо (кстати, нет никаких других ошибок или предупреждений компиляции)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); 

dosn't возвращают значение , это метод 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; 
} 
Смежные вопросы