gpt4 book ai didi

java - 如何为对象 2 的变量赋予与对象 1 中的变量相同的值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:32 25 4
gpt4 key购买 nike

语言:Java.

目标:为对象 rooms[](类:Room)的变量名称赋予与对象 guest1(类:Guest)的变量 nameGuest 相同的值。

问题:这行不通

 void printRooms(){
for(int i = 0; i < rooms.length; i++){
rooms[i].roomNr = ""+(i+1);
for(int j = 0; j < 2; j++){
a = guest1.getName();
rooms[i].name = a;
}//end for
}//end for
}//end void

审阅:我试过 rooms[i].name = guest1.nameGuest。那没有用。使方法 getName 返回 nameGuest 也不起作用。制作一个进站变量 a 来存储值也是如此。我是类间编码的新手,目前正在尝试在 https://docs.oracle.com/javase/tutorial/java/javaOO/ 上阅读更多有关如何进行编码的信息。和 http://www.tutorialspoint.com/java/java_object_classes.htm但它没有成功。

问题:如何将 object2.variable 值赋给 object1.variable在这种情况下,酒店必须有一个方法 printRooms 给房间 [i] 一个数字和客人的名字。

这是我的完整代码:

public class Hotel2 {
Guest[] guest;
Room[] rooms;
String a;

void execute() {
rooms = new Room[10];
Guest guest1 = new Guest("Alain");
Guest guest2 = new Guest("Jantje");

for (int i = 0; i < 9; i++) {
rooms[i] = new Room(guest1);
}

//2 guests in 1 room
rooms[9] = new Room(new Guest[]{guest1, guest2});
System.out.println(Arrays.toString(rooms));

printRooms();

}

void printRooms() {
for (int i = 0; i < rooms.length; i++) {
rooms[i].roomNr = "" + (i + 1);
for (int j = 0; j < 2; j++) {
a = guest1.getName();
rooms[i].name = a;
}//end for
}//end for
}//end void

public static void main(String[] args) {
(new Hotel2()).execute();
}
}

class Room {
Guest[] guests;
String roomNr;
String name;

//1 guest constructor
Room(Guest g) {
guests = new Guest[1];
guests[0] = g;
}

//several guests constructor
Room(Guest[] g) {
guests = g;
}

}

class Guest {
String nameGuest;

Guest(String n) {
nameGuest = n;
System.out.println(nameGuest);
}

String getName() {
return nameGuest;
}
}

最佳答案

真的很难理解你在问什么。

您的问题似乎出在这段代码上:

void printRooms() {
for (int i = 0; i < rooms.length; i++) {
rooms[i].roomNr = "" + (i + 1);
for (int j = 0; j < 2; j++) {
a = guest1.getName();
// ^^^^^^ Compiler error: cannot resolve symbol "guest1"
rooms[i].name = a;
}
}
}

注意评论 ^^^^^ 我放在那里。代码不编译,因为变量 guest1 未定义。它没有在方法内部定义,并且它没有定义为类的字段。

如果您打算使用第一位客人的姓名覆盖每个房间的名称,可以这样:

void printRooms() {
for (int i = 0; i < rooms.length; i++) {
rooms[i].roomNr = "" + (i + 1);
rooms[i].name = room.guests[0].getName();
}
}

但这对于一个叫做printRooms的方法来说没有意义,因为它什么都不打印。

但我希望基于此,你会弄清楚如何去做你真正想做的事情。

关于java - 如何为对象 2 的变量赋予与对象 1 中的变量相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796960/

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