Как вернуть null в методе getter и не печатать «null» в методе toString при получении вывода в текстовом «dungeon crawl»? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь создать объект Room, который использует методы getter и setter.Для каждой комнаты есть либо комната, либо комната (NULL) для N, E, W или S.

1) Каждый объект Room содержит ссылки на до четырех других объектов Room (N, E,W или S)

2) Метод toString () должен включать имя комнаты, описание комнаты и метод getExits ()

public class Room {

 private String name;
 private String description;
 private Room north;
 private Room east;
 private Room west;
 private Room south;

 public Room(String name, String description) {
      this.name = name;
      this.description = description;
 } //end Room constructor class


 public String getName() {
      this.name = name;
      return this.name;
 }

 // public String getExits() {
 //      if()
 // }

 public Room getEast() {
      if (this.east == null) {
           return null;
      }
      return this.east;
 }

 public Room getNorth() {
      if (this.north == null) {
           return null;
      }
      return this.north;
 }

 public Room getWest() {
      if (this.west == null) {
           return null;
      }
      return this.west;
 }

 public Room getSouth() {
      if (this.south == null) {
           return null;
      }
      return this.south;
 }

 public void setExits(Room n, Room e, Room w, Room s) {
      this.north = n;
      this.east = e;
      this.west = w;
      this.south = s;
 } //end setExits

 public String toString() {
      String nm;
      nm = "["+name+"]"+"\n" +
      description + "\n" +
      getExits(); //need this method 
      return nm;
 }

} // конец класса DungeonCrawl

#this is what I wan't my output to look like#
[Hall]
Its Dark.
[N]orth: Bed
[E]ast : Bath
[W]est : Dining

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Вы всегда можете использовать @ override.

    @Override
    public String toString(){
    return "["+name+"]\n"+description+"\n"+getExits();
    }

    public String getExits(){
    StringBuilder builder = new StringBuilder();
    if(west != null)
    builder.append("[W]est: "+west.getName()+"\n");
    else
    builder.append(";"); //append nothing if exit does not exist in that direction
    //repeat for every room
    return builder.toString();
    }

Для этого требуется импортировать StringBuilder в ваш класс, вместо этого вы можете также использовать простую конкатенацию строк

0 голосов
/ 19 апреля 2019

Я не знаю, понял ли я ваш вопрос, но, возможно, вы можете сделать что-то вроде этого:

public String toString() {
    return yourVariable == null ? "" : "text"
}

В этом случае, если yourVar равно нулю, оно будет возвращено в методе полученияв то время как toString вернет все, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...