Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “非静态变量”;youngestAge“;无法从静态上下文引用。感谢您的帮助!:)_Java_Loops_Oop - Fatal编程技术网

Java “非静态变量”;youngestAge“;无法从静态上下文引用。感谢您的帮助!:)

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;

我想在x数量的宠物中找到输入的最小年龄。我试过把“公共空间”放在youngestAge里;但是,这只会为变量“youngestAge”获取最新的赋值。我认为这是因为“静态”这个关键词;所以,我尝试删除它,但这只会导致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 );
}
包装宠物;
导入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。你不能在不了解它们的用途的情况下将静态和非静态混合。如果你声明任何静态的东西,它们都是类级的,所以它们只有一个副本。另一方面,非静态字段/方法是对象级的,你需要创建对象来访问/调用它们。我相信你会在网上找到一大堆解释这一点的文章。只需谷歌一下。