我认为我已经正确设置了方法,可以为我提供房间总数,但无法编译。我哪里出错了?
public class Hotel {
public static int singleRooms;
public static int doubleRooms;
public static int kingRooms;
public Hotel(int numberSingleRooms, int numberDoubleRooms, int numberKingRooms) {
singleRooms = numberSingleRooms;
doubleRooms = numberDoubleRooms;
kingRooms = numberKingRooms;
}
public static Hotel IvanHotel = new Hotel(1,3,5);
int totalRooms = GetTotalRooms(IvanHotel);
public static void main(String[] args) {
System.out.println(totalRooms);
}
}
public class GetTotalRooms {
public static int totalRooms;
public int GetTotalRooms(Hotel yourHotel) {
totalRooms = Hotel.singleRooms + Hotel.doubleRooms + Hotel.kingRooms;
return totalRooms;
}
}
我应该更改什么才能使其编译?我收到无法找到的符号错误,我也不知道为什么。
答案 0 :(得分:1)
好像您对static
的概念感到困惑。您无法从static
上下文访问非静态值。
此代码应该可以解决问题
public class Hotel {
//...
static int totalRooms = GetTotalRooms.getRoomsCount(IvanHotel);
//...
}
class GetTotalRooms {
public static int getRoomsCount(Hotel yourHotel) {
totalRooms = Hotel.singleRooms + Hotel.doubleRooms + Hotel.kingRooms;
return totalRooms;
}
}
如果您是初学者,我建议阅读大量示例代码并从基本概念入手。不要跳过基本概念。
答案 1 :(得分:0)
您需要多做一些阅读,以了解static
的用途以及使用原因。在编写代码的方式中,不能以静态方式调用非静态方法,首先需要先创建GetTotalRooms
的实例,然后才能进行GetTotalRooms
,因此对于您要编写的代码
//...
private GetTotalRooms getTotalRooms = new GetTotalRooms();
int totalRooms = getTotalRooms.GetTotalRooms(IvanHotel);
//...
或者您应该遵循Doc所说的,并使该方法也成为您的调用static
。
我还建议您练习命名约定,首先,您的类名听起来像方法名,然后又有了一个与您的类名完全相同的方法,您的Hotel
类很好,但是{ {1}}类是问题,
id最好命名为GetTotalRooms
之类的名称,因为您要返回RoomsList
中的房间总数
您的类名称应引用一个对象,Hotel
不是一个对象,在您的情况下它是一个等式。然后,您的方法名称应引用一个动作,并应以小写字母开头,为您的方法选择的名称很好,它告诉我在调用它时会发生什么,只需使其以小写字母开头这样看起来就不会像一堂课。
您可以在此处了解更多信息:
和