#java #methods
#java #методы
Вопрос:
Я пытаюсь создать объект 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
Комментарии:
1. Я лично считаю, что это ужасная идея — создавать класс, в котором объекты класса являются переменными.
2. это присваивание. Я согласен. Не имеет особого смысла делать это так, как я должен это делать, но для того, чтобы получить полный кредит, это должно быть сделано именно так. Хотя спасибо за ввод.
Ответ №1:
Я не знаю, понял ли я ваш вопрос, но, может быть, вы можете сделать что-то вроде этого:
public String toString() {
return yourVariable == null ? "" : "text"
}
В этом случае, если yourVar
равно null , оно будет возвращено в методе получения, в то время toString
как вернет все, что вы хотите.
Ответ №2:
Вы всегда можете использовать @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 в ваш класс, вы также можете использовать обычную конкатенацию строк вместо этого