3 回答

TA貢獻1865條經驗 獲得超7個贊
你應該聲明youngestAge為靜態變量。這樣所有的都petObject可以共享相同的值。
static int youngestAge=9999;
你的 setter 和 getter 方法也不合適。
public static String setPetName()
{
return petName;
}
應該:
public static void setPetName(String name)
{
petName=name;
}
也不要忘記從 main 方法中設置值PetObject。
...
petName= input.next();
PetObject.setPetName(petName);
...

TA貢獻1820條經驗 獲得超2個贊
這段代碼有很多問題。
但是為了直接回答你的問題,想一想如果每次 for 循環運行時它都重新創建寵物對象,那么這個程序中可能有多少寵物對象,因為它在 for 循環內。但是,簡單地將它移到 for 循環之外將無濟于事,因為那樣的話,每次運行 for 循環時,您都會不斷地重置同一個 pet 對象的值??紤]制作一系列寵物物品。
此外,您的代碼實際上從未訪問過寵物對象實例變量
此外,正如其他人指出的那樣,您使用 static 還存在其他問題。干杯。

TA貢獻1876條經驗 獲得超6個贊
每次創建Pet時,您都會為該對象獲得一個不同的youngestAge ,其值為 9999。因此,每次它都會將最新的petAge與 9999 進行比較,并在您輸入的petAge小于 9999時為您提供最新的petAge 。
如果需要存儲最小年齡,則將其保存在靜態字段中。因為,保留一個額外的字段來存儲所有對象的最小年齡對于內存來說是多余的。
如果您希望使用現有設計獲得所需的輸出,請執行以下操作:
使youngestAge靜態化:
static int youngestAge=9999;
并且也不要忘記使該方法也成為靜態的。不再需要使其成為對象屬性,它使用的字段變量都是靜態的。
public static int getYoungestPet()
{
if (petAge<youngestAge)
youngestAge=petAge;
return youngestAge;
}
添加回答
舉報