[英]non-static method toString() cannot be referenced from a static context
不需要任何代碼,只需要某種指導。 想保持我的學術誠信;)
我不斷收到那個煩人的錯誤。 我需要為每個 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());
}
}
您不應該嘗試在 Room 類上調用toString()
,而是在 Room對象上調用。 在該方法中,使用 for 循環遍歷房間數組,並打印通過調用toString()
為數組中保存的每個 Room 對象返回的字符串,因為這是您的方法應該執行的操作。
例如
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]);
}
System.out.println(Arrays.toString(arr));
在這一行中,當你寫 arrays 時,會出現一個下拉菜單,在那里你會看到默認的 package 或java.util
package。你需要 select java.util
884373
由於錯誤已經說明,請勿在靜態上下文中調用實例方法。
房間是一個類,而不是一個對象。 toString 是一個實例方法。 所以 Room.toString() 在這種情況下編譯器會尋找一個靜態方法 toString。 但是 toString 是一個實例方法,所以它會導致問題。
永遠記住實例方法是用類的對象調用的,而不是類本身。
您可能正在做的是在類 Room 上調用toString()
,而不是它的實例。 例如,不要寫:
Room.toString()
寫:
Room r = new Room()
r.toString()
看下面的代碼,你可以用靜態變量編譯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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.