Java 包含对象的二维数组

Java 包含对象的二维数组,java,object,multidimensional-array,Java,Object,Multidimensional Array,这是一个涉及创建酒店宾客服务的课堂作业。我在下面创建了一个包含8个“楼层”、20个“房间”的二维阵列,并用Room对象填充它们。我目前正在尝试使用嵌套for循环遍历每个房间对象并为其指定一个房间号。例如,1楼将包含101-120房间 下面的类是我正在使用的测试类 public class Test { public Test() { } public static void main(String[] args) { /** * C

这是一个涉及创建酒店宾客服务的课堂作业。我在下面创建了一个包含8个“楼层”、20个“房间”的二维阵列,并用
Room
对象填充它们。我目前正在尝试使用嵌套for循环遍历每个房间对象并为其指定一个房间号。例如,1楼将包含101-120房间

下面的类是我正在使用的测试类

public class Test {

    public Test() {
    }

    public static void main(String[] args) {
        /**
          * Creates a two dimensional array with 8 rows and 20 columns
          */
        Room [][] hotelBuild = new Room[8][20];
        /**
          * populates the 2d array with Room objects
          */
        for (int floor=0; floor<hotelBuild.length; floor++) {
            for (int room=0; room<hotelBuild[floor].length; room++) {
                hotelBuild[floor][room] = new Room();
                /**
                 * used to print out contents of 2d array
                 */
                //System.out.print(hotelBuild[floor][room]=new Room());
            }
        }
    }
}
如何为数组中的每个
房间
对象分配唯一的房间号?

您可以这样做

for (int floor=0; floor<hotelBuild.length; floor++){
    for (int room=0; room<hotelBuild[floor].length; room++){
        Room r = new Room();
        r.setRoomNumber(
           cleverCalculationWithFloorAndRoomNr(floor, room));
        hotelBuild[floor][room]= r;

for(int floor=0;floor如果你想把数字按正确的顺序排列,那么就使用你以前拥有的变量。使用计数来知道它是什么楼层(它将在第一个循环结束时增加)。然后房间号是Floor*100+在第一个循环开始时重置为1的另一个变量。这只是一个帮助您的提示。填补空白;)

int floorNumber=1;
int roomNumber=1;

例如,您可以将其通过承包商,或在教室(教室ahahah)中设置一个setter

例如:

for (int floor=0; floor<hotelBuild.length; floor++){
        for (int room=0; room<hotelBuild[floor].length; room++){
            hotelBuild[floor][room]=new Room((floor+1)*100+room+1);
        }
    }

您的问题是?如何为数组中的每个房间对象指定一个唯一的房间号?如果您只关心房间号,那么您需要房间号设置器。如果您特别希望一楼包含101-120个房间,那么您只需计算((1+楼层)*100)+1+房间并设置值如果你想让数字按正确的顺序排列,那么就使用辅助变量。使用计数来知道它是什么楼层(它将在第一个循环结束时增加)那么房间号是Floor*100+另一个变量,你在第一个循环开始时重置为1。谢谢ameer,这也有帮助。谢谢你,这有帮助。教室…教室,我突然意识到8U
int floorNumber = 1;
int roomNumber = 1;
for (int floor=0; floor<hotelBuild.length; floor++){
        for (int room=0; room<hotelBuild[floor].length; room++){
            hotelBuild[floor][room]=new Room();

                            /**
                             * used to print out contents of 2d array
                             */
            //System.out.print(hotelBuild[floor][room]=new Room());
            //Add room number here.
            //Increase room number

        }
  //floorNumber increase
  //roomNumber reset
    }
for (int floor=0; floor<hotelBuild.length; floor++){
    for (int room=0; room<hotelBuild[floor].length; room++){
        hotelBuild[floor][room]=new Room();
        // room number format: xxyy, x = floor, y = room
        // this assumes maximum 99 rooms per floor, it should be enough
        hotelBuild[floor][room].setNumber((floor + 1) * 100 + room + 1);
    }
}
for (int floor=0; floor<hotelBuild.length; floor++){
        for (int room=0; room<hotelBuild[floor].length; room++){
            hotelBuild[floor][room]=new Room((floor+1)*100+room+1);
        }
    }
class Room{
  public Room(int roomNumber){
    this.roomNumber = roomNumber;
  }
...
}