Java 数组中设置值的问题
我是java新手,正在制作一个酒店系统。我有三个主要的班级:房间、楼层和酒店。除房间号外,每层都有相同类型的房间。因此,我只需设定10个房间,然后将它们全部分配给我的5层,然后将房间号分配给相应楼层的每个房间。 房间号的第一个数字为楼层号,其余数字为1-10。 然而,我在酒店的所有房间都被分配了5楼的号码 这是我的代码片段Java 数组中设置值的问题,java,Java,我是java新手,正在制作一个酒店系统。我有三个主要的班级:房间、楼层和酒店。除房间号外,每层都有相同类型的房间。因此,我只需设定10个房间,然后将它们全部分配给我的5层,然后将房间号分配给相应楼层的每个房间。 房间号的第一个数字为楼层号,其余数字为1-10。 然而,我在酒店的所有房间都被分配了5楼的号码 这是我的代码片段 class Floor { private int floorNo; private Room[] Rooms; public Floor()
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();
}
}
}
课堂
{
私人室内地板;
私人房间[]间;
公众席()
{
floorNo=0;
房间=空;
}
公共楼层(内部f、内部t)
{
floorNo=f;
房间=新房间[t];
}
公共房间(房间[]R)
{
对于(int i=0;i<10;i++)
{
房间【i】=新房间();
房间[i]=R[i];
}
}
公共无效设置室(内部i、内部f、内部r)
{
房间[i].塞特弗劳诺(f);
房间[i]。设置房间号(r);
}
}
公共班机
{
公共静态void main(字符串[]args)
{
房间[]间=新房间[10];
对于(int n=0;n<10;n++)
{
房间[n]=新房间();
}
}
楼层[]楼层=新楼层[5];
对于(int n=0;n<5;n++)
{
楼层[n]=新楼层(n+1,10);
楼层[n]。创建房间(房间);
对于(int i=0;i<10;i++)
{
楼层[n]。设定室(i,n+1,i+1);
}
对于(int n=0;n<5;n++)
{
楼层[n]。打印();
}
}
}
您可以这样尝试smth:
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 +
'}';
}
}
}
课堂
{
私人室内地板;
私人房间[]间;
公众席()
{
floorNo=0;
房间=空;
}
公共楼层(内部f、内部t)
{
floorNo=f;
房间=新房间[t];
}
公共房间(房间[]R)
{
对于(int i=0;i<10;i++)
{
房间【i】=新房间();
房间[i]=R[i];
}
}
公共无效设置室(内部i、内部f、内部r)
{
房间[i].塞特弗劳诺(f);
房间[i]。设置房间号(r,f);
}
}
教室
{
公共空间设置平面图(int i)
{
系统输出打印项次(“楼层编号为”+i);
}
公共无效设置房间号(int j,int k)
{
系统输出打印项次(“房间号为“+k+”+j);
}
}
公共班机
{
公共静态void main(字符串[]args)
{
房间[]间=新房间[10];
对于(int n=0;n<10;n++)
{
房间[n]=新房间();
}
楼层[]楼层=新楼层[5];
对于(int n=0;它是否编译?我没有看到total
声明了什么问题?它是否仍在编译???您需要发布完全相同的代码,不要放置位和块。请参见编辑。当我调用地板打印函数时,它会为它包含的每个房间调用打印。但是,所有房间都分配了最后10个数字bers.例如51 52 53…其中“5”表示楼层编号。正确的输出应该是11 12 13…21 22…它永远不会在任何编译器中编译。首先修复所有编译问题。虽然此代码可能会回答问题,但提供有关此代码为什么和/或如何回答问题的其他上下文可提高其长期价值。Ac实际上,初始上下文甚至没有编译,所以我根据所描述的问题提出了自己的实现,我认为有总比没有好)这种问答方式更适合
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}}
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
}
}
}