2017-09-23 50 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 
    } 
    } 

}