2017-09-23 52 views
-3

我是新来java和制作酒店系统。我有三个主要类,房间,楼层和酒店。除了房间号码之外,每层楼都有相同类型的房间。因此,我只说10个房间,然后将它们全部分配给我的5个楼层,然后将房间号码分配给各个楼层中的每个房间。 房间号码的第一位数字为楼层号码,剩下的数字为1-10。 但是,我在酒店的所有房间都被分配了5楼的号码。设置阵列值的问题

继承人我的代码片段。

class Floor 
{ 
    private int floorNo; 
    private Room[] Rooms; 

    public Floor() 
    { 
     floorNo = 0; 
     Rooms = null; 
    } 

    public Floor(int f, int t) 
    { 
     floorNo = f; 
     Rooms = new Room[t]; 
    } 

    public void createRooms(Room[] R) 
    { 
     for (int i = 0; i < 10; i++) 
     { 
      Rooms[i] = new Room(); 
      Rooms[i] = R[i]; 
     } 
    } 

    public void setRoom(int i, int f, int r) 
    { 
     Rooms[i].setFloorNo(f); 
     Rooms[i].setRoomno(r); 
    } 

} 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Room[] Rooms = new Room[10]; 
     for (int n = 0; n < 10; n++) 
     { 
      Rooms[n] = new Room(); 
     } 
    } 

    Floor[] Floors = new Floor[5]; 
    for (int n = 0; n < 5; n++) 
    { 
     Floors[n] = new Floor(n + 1, 10); 
     Floors[n].createRooms(Rooms); 

     for (int i = 0; i < 10; i++) 
     { 
      Floors[n].setRoom(i, n + 1, i + 1); 
     } 
     for (int n = 0; n < 5; n++) 
     { 
      Floors[n].print(); 
     } 
    } 
} 
+0

它甚至不能编译?我没有看到任何地方总共声明 – Ravi

+0

问题是什么? – blafasel

+0

它仍然编译?你需要发布完全相同的代码,不要放在一起。 – Ravi

回答

-1

你可以尝试水木清华这样的:

public class Hotel { 

    private List<Floor> floors = new ArrayList<>(); 

    public boolean addFloor(Floor floor) { 
     return floors.add(floor); 
    } 

    public static void main(String[] args) { 

     int totalFloors = 5; 
     int totalRoomsOnAFloor = 10; 

     final Hotel hotel = new Hotel(); 

     int roomNumber = 0; 
     for (int floorNumber = 0; floorNumber < totalFloors; floorNumber++) { 
      Floor floor = new Floor(floorNumber); 
      for (int floorRoomNumber = 0; floorRoomNumber < totalRoomsOnAFloor; floorRoomNumber++) { 
       Room room = new Room(floor, roomNumber++); 
       floor.addRoom(room); 
       System.out.println("Added " + room.toString()); 
      } 
     } 

    } 

    public static class Floor { 

     private List<Room> rooms = new ArrayList<>(); 
     private int number; 

     public Floor(int number) { 
      this.number = number; 
     } 

     public boolean addRoom(Room room) { 
      return rooms.add(room); 
     } 

     public int getNumber() { 
      return number; 
     } 

     @Override 
     public String toString() { 
      return "Floor{" + 
        "number=" + number + 
        '}'; 
     } 

    } 

    public class Room { 

     private final Floor floor; 
     private final int number; 

     public Room(Floor floor, int number) { 
      this.floor = floor; 
      this.number = number; 
     } 

     public int getNumber() { 
      return number; 
     } 

     public Floor getFloor() { 
      return floor; 
     } 

     @Override 
     public String toString() { 
      return "Room{" + 
        "number=" + number + 
        ", on the floor=" + floor + 
        '}'; 
     } 

    } 

} 

输出:

Added Room{number=0, on the floor=Floor{number=0}} 
Added Room{number=1, on the floor=Floor{number=0}} 
Added Room{number=2, on the floor=Floor{number=0}} 
... 
Added Room{number=47, on the floor=Floor{number=4}} 
Added Room{number=48, on the floor=Floor{number=4}} 
Added Room{number=49, on the floor=Floor{number=4}} 
+0

尽管此代码可能会回答这个问题,但提供有关为何和/或代码如何回答问题的其他上下文可以提高其长期价值。 – Tom

+0

实际上,初始上下文甚至没有编译,所以我根据所描述的问题提出了自己的实现。 [汤姆](https://stackoverflow.com/users/3824919/tom),我认为是比没有好)) –

+0

这种问题和答案更适合https://codereview.stackexchange.com/ – astef

0
class Floor 
{ 
    private int floorNo; 
    private Room[] Rooms; 
    public Floor() 
    { 
     floorNo=0; 
     Rooms=null; 

    } 
    public Floor(int f, int t) 
    { 
    floorNo=f;  
    Rooms = new Room[t]; 

    } 
    public void createRooms(Room[] R) 
    { 
     for(int i = 0 ; i < 10; i ++) 
     { 
     Rooms[i] = new Room(); 
     Rooms[i] = R[i]; 
     } 
    } 

    public void setRoom(int i, int f, int r) 
    { 
    Rooms[i].setFloorNo(f); 
    Rooms[i].setRoomno(r,f); 
    } 
} 

class Room 
{ 
    public void setFloorNo(int i) 
    { 
     System.out.println("floor no is "+i); 
    } 
    public void setRoomno(int j,int k) 
    { 
     System.out.println("room no is "+k+""+j); 
    } 

} 

public class main 
{ 
    public static void main(String[] args) 
    { 

    Room [] Rooms= new Room[10]; 
    for(int n = 0; n < 10; n++) 
    { 
     Rooms[n] = new Room(); 
    } 

    Floor [] Floors= new Floor[5]; 
    for(int n=0; n<5; n++) 
    { 
    Floors[n] = new Floor (n+1,10); 
    Floors[n].createRooms(Rooms); 
    } 

    for(int n=0; n < 5; n++) 
    { 
     for(int i=0;i<10;i++) 
     Floors[n].setRoom(i, n+1, i+1); 
    enter code here 
    } 
    } 

}