2015-09-26 35 views
2

语言: Java。如何将对象2的变量赋予与对象1中的变量相同的值?

目的: 从对象间给变量名[](等级:房间)相同的值,从对象guest1虚拟变量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]。名称= 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]一些与客人的姓名(或名称)( S)。

这里是我的全码:

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; 
    } 
} 
+0

出了什么问题?如果数据和类型正确,则没有原因,您不能将一个变量指定为另一个变量的值。 –

+0

缩进的注意事项。我直接复制了代码(来自Dr. Java),并且必须添加空格,以便Stackoverflow能够将其作为代码进行检测。 至于什么不顺心: 1个发现错误: 文件:C:\用户\ s150951 \ TUE科学网JAAR 1 \编程(E)\ Hotel2.java [行:31] 错误:guest1虚拟无法解决 这是它一直告诉我的。但我无法弄清楚guest1有什么问题。无论我尝试使用什么部分来获取nameGuest的价值“无法解决” –

+0

您的“guest1”变量确实存在问题。它在你的“execute()”方法中被本地声明,然后你试图在“printRooms()”上使用它。您应该在您的课堂中声明“guest1”(也可能是guest2)作为属性,就像您使用“guest”和“rooms”数组一样。 –

回答

0

这真的很难理解你的要求。

你的问题似乎是与此代码:

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方法, 它打印什么。

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

+0

这似乎是为了完成这项工作。谢谢,我想我可以找到旧代码中的缺陷并继续。 我同意printRooms是该方法的一个奇怪的名称,但它不是我的电话。我希望被指示稍后打印一些内容。 如果我的问题不清楚的话。我打算尽可能清楚地说明问题,现在我打算下次再努力。我怀疑我的解释受到我的经验不足的困扰,但我一整天都在努力解决这个问题。 谢谢你的帮助。 –

相关问题