如何从用户输入

时间:2017-05-24 00:37:26

标签: java

我试图从用户输入中访问超类变量名。 我不确定如何让超类变量名指向用户输入。这是它的代码。任何想法都谢谢你。

    package chapter4;
    import java.util.Scanner;

    public class VetOffice extends Animal {

        public VetOffice(int lifeExpectancy, int weight, String name, Character gender, String type) {
            super(lifeExpectancy, weight, name, gender, type);
            // TODO Auto-generated constructor stub
        }
       public static void main(String[] args) {

        Scanner console = new Scanner(System.in);

                System.out.print("Please enter name of pet");
                //super(name);
                //= console.next();
        //}
        }   
    }
    //}

1 个答案:

答案 0 :(得分:0)

问题是你无法在main方法中访问超类变量。因为它是static方法。如果您想在main()中访问,则必须将Animalname变量设置为静态。然后,您可以直接在main()

中分配值

像这样:

在Animal类中,

static String name;

在VetOffice中,

name = console.next();

您可以尝试不同的方式,具体取决于您必须决定的事情,

此变量是否可以声明为static?因为每个对象都有static个变量。

另一种方法是

Animal类成员变量创建getter和setter。然后你也无法访问main方法,因为你还必须将这些方法和变量设置为静态。

作为一个没有将它们静态化的解决方案或者一个新的方法,甚至是超类中的getter和setter,你可以为超类创建默认构造函数并分配如下的值:

如果超类中的变量为private,则必须创建getter和setter。

public static void main(String[] args) {
   Scanner console = new Scanner(System.in);
   System.out.print("Please enter name of pet");

   VetOffice pet = new VetOffice();
   pet.name = console.next();
   System.out.println(pet.name);
} 

注意:创建默认构造函数如果没有必要从VetOffice或超类创建对象,则必须将值传递给构造函数。

<强>更新

根据你的评论

如果超类中的变量为private,请执行以下操作:

public static void main(String[] args) {
   Scanner console = new Scanner(System.in);
   System.out.print("Please enter name of pet");

   VetOffice pet = new VetOffice();
   pet.setName(console.next());
   System.out.println(pet.getName());
}

您在评论中要求的另一种方式:

动物类(部分实施以向您展示)

public class Animal {
    int lifeExpectancy;
    static int weight;
    static String name;

    Animal(int lifeExpectancy, int weight, String name, Character gender, String type){
        this.weight = weight;
        this.name = name;
    }

    public static String getName() {
        return name;
    }
    public static void setName(String n) {
        name = n;
    }
}

然后在主要方法中:

Animal.setName(console.next());
System.out.println(Animal.getName());