gpt4 book ai didi

java - 无法从静态上下文引用非静态变量 "youngestAge"。任何帮助表示赞赏! :)

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:31 24 4
gpt4 key购买 nike

我想找到 x 只宠物中输入的最小年龄。我尝试将 'public static int youngestAge';但是,这只是为我提供了变量“youngestAge”的最新分配值。我认为这是因为关键字“static”;所以,我尝试删除它,但这只会导致 netbeans 告诉我 '非静态变量不能从静态上下文引用' 。我期望代码给出最低输入的年龄。

package pet;
import java.util.Scanner;
public class Pet
{
public static String petName;
public static int petAge, petWeight;
public int youngestAge;


public static String setPetName()
{
Scanner input = new Scanner(System.in);
petName= input.next();
return petName;
}

public int setPetAge()
{
Scanner input = new Scanner(System.in);
petAge= input.nextInt();
return petAge;
}

public int setPetWeight()
{
Scanner input = new Scanner(System.in);
petWeight= input.nextInt();
return petWeight;
}


public void getYoungestPet()
{
if (youngestAge<petAge)
youngestAge=petAge;
System.out.println("The youngest age is " + 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 );
PetObject.setPetName();
System.out.println("Your pet's name is : " + petName);
System.out.println(" ");
System.out.println("Please enter " + petName + "'s Age" );
PetObject.setPetAge();
System.out.println("Your pet's age is : " + petAge);
System.out.println(" ");
System.out.println("Please enter " + petName + "'s Weight" );
PetObject.setPetWeight();
System.out.println("Your pet's weight is : " + petWeight);
System.out.println(" ");

if (youngestAge<PetObject.petAge)
youngestAge=PetObject.petAge;
}
System.out.println("The youngest age here is : " + youngestAge );
}

最佳答案

使用的 if 条件错误。它将检查当前宠物对象的年龄是否大于 youngestAge,然后将 youngestAge 指定为当前宠物对象的年龄。

if (youngestAge<PetObject.petAge)
youngestAge=PetObject.petAge;
}

这将产生最大的年龄而不是最小的年龄。

要获取最小年龄,仅当当前 Pet 对象的年龄小于 youngestAge 时才需要分配 youngestAge 来获取最小年龄。

您收到的错误是因为您试图在静态方法 main 中访问 Pet 类的实例变量。

另外 youngestAge 应该是你的 Pet 类的一部分。宠物不应该知道其他宠物迄今为止最小的年龄是多少。youngestAge 应该是其他类的成员,例如 PetMain 类。

您可以将其设为静态变量,然后从主类访问它,也可以将其设为 main 方法中的局部变量。

关于java - 无法从静态上下文引用非静态变量 "youngestAge"。任何帮助表示赞赏! :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com