如何给object-2的变量赋值与object-1中的变量相同?

时间:2015-09-26 12:03:29

标签: java

语言: Java的。

目的: 从object room [](class:Room)给变量名与对象guest1(class: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

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

问题: 如何将object2.variable值赋予object1.variable 在这种情况下,酒店必须有一个方法printRooms,为room [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;
    }
}

1 个答案:

答案 0 :(得分:1)

很难理解你在问什么。

您的问题似乎与此代码有关:

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的方法没有意义, 因为它什么都不打印。

但我希望在此基础上你能弄清楚如何做你真正想做的事。