gpt4 book ai didi

java - Java 中的 toString 方法调用

转载 作者:行者123 更新时间:2023-12-01 06:27:07 25 4
gpt4 key购买 nike

Possible Duplicate:
Why is the toString() method being called when I print an object?

我下面有这段代码。除了使用 Room 类中的 toString 方法的输出之外,我理解其他所有内容。在HotelMain类中,我刚刚调用了Hotel类中的displayRooms方法。但是,当我运行该程序时,toString 输出显示在控制台中。

如果我是对的,toString() 是对象中值的文本表示形式。但是,我不确定在哪里调用了 toString 方法。

有人可以解决我的困境吗?谢谢。

酒店等级

public class Hotel {

private String hotelName;
private Room[] rooms;

public Hotel(String hotelName, int numberOfRooms) {
this.hotelName = hotelName;
this.rooms = new Room[numberOfRooms];
}

public void addRooms(Room room) {

int position = -1;

for (int i = 0; i < this.rooms.length; i++) {
Room tempRoom = rooms[i];

if (tempRoom == null) {
position = i;
break;
}
}

if (position != -1) {
rooms[position] = room;
System.out.println("New room added at postion " + position);

} else {
System.out.println("Addition of room failed.");
}
}

public void displayRooms() {

System.out.println("The Hotel: " + this.hotelName + " has the following rooms.");

for (int i = 0; i < this.rooms.length; i++) {
Room tempRoom = rooms[i];
if (tempRoom != null) {
System.out.println(tempRoom);
}
}

}

房间等级

public class Room {

private int roomNumber;
private int numberOfBeds;
private boolean smokingOrNonSmoking;

public Room() {

}

public Room(int roomNumber, int numberOfBeds, boolean smokingOrNonSmoking) {
this.roomNumber = roomNumber;
this.numberOfBeds = numberOfBeds;
this.smokingOrNonSmoking = smokingOrNonSmoking;
}

@Override
public String toString() {
return "Room [roomNumber=" + roomNumber + ", numberOfBeds="
+ numberOfBeds + ", smokingOrNonSmoking=" + smokingOrNonSmoking
+ "]";
}

}

酒店主楼

public class HotelMain {

public static void main(String[] args) {

Hotel hotel = new Hotel("MahaRani Chain of Hotels", 10);
Room room1 = new Room(4, 2, true);
Room room2 = new Room(2, 1, false);
Room room3 = new Room(6, 3, true);
Room room4 = new Room(6, 4, false);

hotel.addRooms(room1);
hotel.addRooms(room3);
hotel.addRooms(room4);
hotel.addRooms(room2);

hotel.displayRooms();

}

}

控制台

enter image description here

最佳答案

Room tempRoom = rooms[i];
if (tempRoom != null) {
System.out.println(tempRoom);
}

您的 displayRooms() 方法中有上述代码。它打印 tempRoom,它是 Room 的引用,因此它调用 Room 中重写的 toString() 方法> 类。

关于java - Java 中的 toString 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com