亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從對象列表中找到最小的變量?(Java)

如何從對象列表中找到最小的變量?(Java)

呼如林 2023-03-09 17:13:23
該代碼未顯示任何錯誤。但是,我得到了意外的輸出。我應該得到最小的年齡數字,但我一直得到的是最后輸入的年齡值。你能幫我指出這段代碼中的錯誤嗎?也許getYoungestPet()方法中存在一些邏輯錯誤?package pet;public class Pet {    public static String petName;     public static int petAge, petWeight;    int youngestAge=9999;    static int test;    public static String setPetName()    {      return petName;    }    public int setPetAge()    {        return petAge;    }    public int setPetWeight()    {        return petWeight;    }    public int getYoungestPet() //probably an error here..?    {        if (petAge<youngestAge)            youngestAge=petAge;        return youngestAge;    }}package pet;import java.util.Scanner;public class PetMain extends Pet{    public static void main(String[] args)    {    System.out.println("How many pets do you want to enter? " );     Scanner data= new Scanner(System.in);    int petNumber=data.nextInt();    for (int i = 1;i<=petNumber; i++)    {    Pet PetObject = new Pet();     System.out.println("Please enter name for Pet " + i );       Scanner input = new Scanner(System.in);       petName= input.next();            System.out.println("Your pet's name is : " + petName);    System.out.println(" ");    System.out.println("Please enter " + petName + "'s Age" );       petAge= input.nextInt();        System.out.println("Your pet's age is : " + petAge);    System.out.println(" ");    System.out.println("Please enter " + petName + "'s Weight" );        petWeight= input.nextInt();    System.out.println("Your pet's weight is : " + petWeight);    System.out.println(" ");                        System.out.println(PetObject.getYoungestPet());    }}}該代碼應該顯示最小的年齡,但它顯示的是最新輸入的年齡。
查看完整描述

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);

...


查看完整回答
反對 回復 2023-03-09
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

這段代碼有很多問題。

但是為了直接回答你的問題,想一想如果每次 for 循環運行時它都重新創建寵物對象,那么這個程序中可能有多少寵物對象,因為它在 for 循環內。但是,簡單地將它移到 for 循環之外將無濟于事,因為那樣的話,每次運行 for 循環時,您都會不斷地重置同一個 pet 對象的值??紤]制作一系列寵物物品。

此外,您的代碼實際上從未訪問過寵物對象實例變量

此外,正如其他人指出的那樣,您使用 static 還存在其他問題。干杯。


查看完整回答
反對 回復 2023-03-09
?
HUX布斯

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;

}


查看完整回答
反對 回復 2023-03-09
  • 3 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號