2014-09-29 2 views
-3

Почему, когда я звоню System.out.println(classroom.toStringLong()) Я получаю: класс: большой лекционный зал с нулевым значением, который идет от нуля до нуля?Почему я получаю нуль?

Правильный выход должен быть: в классе: большой лекционный зал с дверью, которая выходит наружу тротуар

public class Main { 
    public static void main(String[] args) { 
     Space classroom = new Space(); 
     classroom.setName("classroom"); 
     classroom.setDescription("a large lecture hall"); 
     Space sidewalk = new Space(); 
     sidewalk.setName("sidewalk"); 
     sidewalk.setDescription("a plain concrete sidewalk with weeds growing through the cracks"); 
     Portal door = new Portal(); 
     door.setName("door"); 
     door.setDirection("outside"); 
     door.setDestination(sidewalk); 
     classroom.setPortal(door); 
     System.out.println(classroom.toStringLong()); 
    } 
} 

public class Space { 
    private String _name; 
    private String _description; 
    private Portal _portal; 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    } 
    public String getName() { 
    return _name; 
    } 

    public void setName(String _name){ 
    this._name=_name; 
    } 
    public String getDescription() { 
    return _description; 
    } 

    public void setDescription(String _description){ 
    this._description=_description; 
    } 
    public Portal getPortal() { 
    return _portal; 
    } 

    public void setPortal(Portal _portal){ 
    this._portal=_portal; 
    } 
    public String toString(){ 
    return _name; 
    } 
    public String toStringLong(){ 
    if (_portal!= null){ 
     Portal p= new Portal(); 
     p.toStringLong(); 
     String Longcombined=_name + ": " + _description+" with a "+p.toStringLong(); 
     return Longcombined; 
    } 
    else{ 
     String Long=_name + ": " + _description; 
     return Long; 
    } 
    } 
} 

public class Portal { 
    private String _name; 
    private String _direction; 
    private Space _destination; 

    public String getName() { 
    return _name; 
    } 

    public void setName(String _name){ 
    this._name=_name; 
    } 
    public String getDirection(){ 
    return _direction; 
    } 
    public void setDirection(String _direction){ 
    this._direction=_direction; 
    } 
    public Space getDestination(){ 
    return _destination; 
    } 
    public void setDestination(Space _destination){ 
    this._destination=_destination; 
    } 
    public String toString(){ 
    String combined=_name+ " that goes "+_direction; 
    return combined; 
    } 
    public String toStringLong(){ 
    Space space=new Space(); 
    String combined=toString() + " to " + space.getDescription() ; 
    return combined; 
    } 

} 
+2

Это может быть легко * разрешено с использованием самых основных навыков отладки. –

ответ

3

Вы создаете новые объект пространства и печать его описания, которое является нулевым , перепишите свой метод toStringLong() на

In class Space 

public String toStringLong(){ 
if (_portal!= null) 
{ 
// comment this Portal p= new Portal(); 
_portal.toStringLong(); 
String Longcombined=_name + ": " + _description+" with a "+_portal.toStringLong(); 
return Longcombined; 
} 
else 
{ 
String Long=_name + ": " + _description; 
return Long; 
} 
} 


Class Portal -> 

public String toStringLong() 
{ 
String combined=toString() + " to " + _destination.getDescription() ; 
return combined; 
} 

Надеюсь, что это решит вашу проблему.

+1

есть код toStringLong() в коде? –

+0

где мой +1? lol –

+0

спасибо !! Это исправило это! –

0

При запуске этого кода «Space space = new Space();» внутри метода toStringLogn() создается новый космический объект, а также все мгновенные переменные этого объекта инициализируются значениями по умолчанию. Значение по умолчанию String равно «null». Вот почему вы получаете нулевое значение при использовании этого объекта.

Лучше пересмотреть свой toStringLong() следующим образом,

Строка в сочетании = ToString() + "к" + _destination.getDescription();
возврат в сочетании;

Смежные вопросы