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;
}
添加回答
举报