不想要任何代码,只是想要某种指导。我想保持学术诚信;)
我一直在收到那个恼人的错误。我需要为每个Room实例调用toString方法。有什么建议?如果可能的话,我希望在2小时内给出答案。
public class Hotel
{
//constant
public static final int NUM_ROOMS = 20;
//variables
public Room[] theRoom;
public String name;
public int totalDays;
public double totalRate;
public int singleCount;
public int doubleCount;
public int roomsRented;
public int NOT_FOUND;
public Hotel(String newName) {
name = newName;
Room[] Rooms = new Room[NUM_ROOMS];
}
public double getTotalRentalSales() {
return totalRate + roomsRented;
}
public double getAvgDays() {
return roomsRented/totalDays;
}
public double getAvgRate() {
return totalRate/roomsRented;
}
public int getSingleCount() {
return singleCount;
}
public int getDoubleCount() {
return doubleCount;
}
public String printRentalList() {
System.out.println("Room Information: " + Room.toString());
}
}
答案 0 :(得分:4)
您不应该尝试在Room类上调用toString()
,而是在Room 对象上调用。在该方法中,使用for循环遍历房间数组,并通过为数组中保存的每个Room对象调用toString()
来返回返回的String,因为这是您的方法应该执行的操作。
例如
System.out.println("All Foos held here include: ");
// using a "for-each" loop, assuming an array called fooArray that holds Foo objects
for (Foo foo: fooArray) {
System.out.println(foo);
}
您显然必须更改代码的类型和变量名称。
编辑2:虽然你必须使用标准for循环,而不是for-each循环,因为你不会循环遍历整个数组,而是在达到roomsRented计数时退出。
System.out.println("All Foos held here include: ");
// using standard for loop, assuming an array called fooArray that holds Foo objects
for (int i = 0; i < someMaxNumber; i++) {
System.out.println(fooArray[i]);
}
答案 1 :(得分:0)
由于错误已经是状态,因此不要在静态上下文中调用实例方法。
房间是一个阶级,而不是一个对象。 toString是一个实例方法。所以在这种情况下,Room.toString()编译器会查找静态方法toString。但toString是一个实例方法,因此它引起了一个问题。
始终记住实例方法是使用类的对象调用的,而不是使用类本身调用。
答案 2 :(得分:0)
你可能正在做的是在课堂上调用toString()
,而不是它的实例。例如,而不是写:
Room.toString()
写:
Room r = new Room()
r.toString()
答案 3 :(得分:0)
看看下面的代码,你可以用一个没有新对象的静态变量编译toString,它只是在运行时抛出异常
demo>cat Test.java
class Water {
public String toString() {return "whatever";}
}
public class Test {
static Water water;
public static void main(String...args) {
System.out.println(water.toString());
}
}
demo>javac Test.java
demo>java Test
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:8)