我的班级的属性正在改变自己[关闭]
Posted
技术标签:
【中文标题】我的班级的属性正在改变自己[关闭]【英文标题】:The attributes of my classes are changing themselves [closed] 【发布时间】:2022-01-19 02:57:12 【问题描述】:我目前正在编写一个酒店游戏,我的酒店房间有自己的房间号。在第一个 for 循环中,我正在调用 addRoom 函数并打印酒店房间的房间号。我得到的结果是
Test 1- Room Number: 1
Test 1- Room Number: 2
Test 1- Room Number: 3
然后在第二个 for 循环中我得到的结果是
Test 2- Room Number: 3
Test 2- Room Number: 3
Test 2- Room Number: 3
代码:
for (int i = 0; i < 3; i++)
addRoom(0);
System.out.println("Test 1- Room Number: " + hotelRooms.get(i).getNum());
for (int i = 0; i < 3; i++)
System.out.println("Test 2- Room Number: " + hotelRooms.get(i).getNum());
这些循环彼此相邻,所以我不确定它们为什么要打印不同的东西。这是我的 addRoom 函数。
public void addRoom(int i)
hotelRooms.add(allRooms.get(i));
System.out.println(hotelRooms.size());
hotelRooms.get(hotelRooms.size()-1).setNum(hotelRooms.size());
funds -= allRooms.get(i).getBuyCost();
moneyInfo.setText("$" + funds);
hotelInfo.setText("Rooms: " + hotelRooms.size() + "\nAmenities: " + hotelAmenities.size() + "\nCustomers: " + customers.size());
System.out.println("function end");
这是我的 Room 课程。
public Rooms(String t, int p, int m, int b, int l)
type = t;
occupied = false;
price = p;
monthlyCost = m;
buyCost = b;
level = l;
messy = 0;
public int getNum()
return num;
public void setNum(int n)
this.num = n;
【问题讨论】:
可能是一个静态字段。显示您的完整代码。hotelRooms
中的所有条目都包含相同的实例,allRooms.get(0)
。
是的,请出示您的代码。几乎可以肯定Rooms
正在使用一些静态字段。
这个问题与两小时前的the one you posted 有何不同?
【参考方案1】:
针对您的问题: 房间号的最新值似乎是保留的值,因为您可能没有存储单独的“房间号”实例。您应该为每个房间实例化一个新的房间号。真的,这里应该有更多的代码。
这很无聊且重复,但是实例化这些新的房间号对象,应该是一个单独的类或包含在“Rooms”类中,这是必要的,超出了足够的强调。真的,我会选择一个单独的类,它是“房间”的子类。没有必要让它比一个带有子类的超类更复杂。当然,将数字作为“房间”的参数可能更简单。然后,您可以将每个房间实例化为“房间”,借出一些语法问题。
职业建议?(硕士生)
【讨论】:
以上是关于我的班级的属性正在改变自己[关闭]的主要内容,如果未能解决你的问题,请参考以下文章