Java “非静态变量”;youngestAge“;无法从静态上下文引用。感谢您的帮助!:)
我想在x数量的宠物中找到输入的最小年龄。我试过把“公共空间”放在youngestAge里;但是,这只会为变量“youngestAge”获取最新的赋值。我认为这是因为“静态”这个关键词;所以,我尝试删除它,但这只会导致netbeans告诉我“不能从静态上下文引用非静态变量”。我希望代码能给出最低的输入年龄Java “非静态变量”;youngestAge“;无法从静态上下文引用。感谢您的帮助!:),java,loops,oop,Java,Loops,Oop,我想在x数量的宠物中找到输入的最小年龄。我试过把“公共空间”放在youngestAge里;但是,这只会为变量“youngestAge”获取最新的赋值。我认为这是因为“静态”这个关键词;所以,我尝试删除它,但这只会导致netbeans告诉我“不能从静态上下文引用非静态变量”。我希望代码能给出最低的输入年龄 package pet; import java.util.Scanner; public class Pet { public static String petName;
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 );
}
包装宠物;
导入java.util.Scanner;
公营宠物
{
公共静态字符串petName;
公共静态整数petAge,petWeight;
公共屋;;
公共静态字符串setPetName()
{
扫描仪输入=新扫描仪(System.in);
petName=input.next();
返回petName;
}
公共int setPetAge()
{
扫描仪输入=新扫描仪(System.in);
petAge=input.nextInt();
返回花瓣;
}
公共int setPetWeight()
{
扫描仪输入=新扫描仪(System.in);
petWeight=input.nextInt();
回重量;
}
public void getYoungestPet()
{
if(youngestAge使用的if条件错误。它将检查当前宠物对象的年龄是否大于youngestAge,然后将youngestAge指定为当前宠物对象的年龄
if (youngestAge<PetObject.petAge)
youngestAge=PetObject.petAge;
}
if(youngestAge使用的if条件错误。它将检查当前宠物对象的年龄是否大于youngestAge,然后将youngestAge指定为当前宠物对象的年龄
if (youngestAge<PetObject.petAge)
youngestAge=PetObject.petAge;
}
if(youngestAge)以后查看代码时,您似乎只需要在PetMain类的main方法中声明int-youngestAge=0;
混合静态和非静态-我建议您去了解它的含义(类字段和实例字段)。这是面向对象编程的一个重要方面。我想你必须多温习一下你的JAVA。你不能在不了解它们的用途的情况下将静态和非静态混合。如果你声明任何静态的东西,它们都是类级的,所以它们只有一个副本。另一方面,非静态字段/方法是对象级的,你需要创建对象来访问/调用它们。我相信你会在网上找到一大堆解释这一点的文章。只需谷歌一下。以后查看你的代码,你似乎只需要在int-youngestAge=0;
你的PetMain类的main方法中声明静态和非静态
-我建议你去了解其含义(类字段和实例字段)。这是面向对象编程的一个重要方面。我想你必须多温习一下你的JAVA。你不能在不了解它们的用途的情况下将静态和非静态混合。如果你声明任何静态的东西,它们都是类级的,所以它们只有一个副本。另一方面,非静态字段/方法是对象级的,你需要创建对象来访问/调用它们。我相信你会在网上找到一大堆解释这一点的文章。只需谷歌一下。