首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在构造函数中添加对象时出错

在构造函数中添加对象时出错
EN

Stack Overflow用户
提问于 2016-12-09 14:41:15
回答 1查看 108关注 0票数 0

对于一个学校项目,我们应该创建一个简单的程序,从用户那里获取一些关于狗(名称、品种、年龄和体重)的输入,并将它们放入ArrayList中。一切似乎都正常,但是为了测试程序,我想在我的方法setUp()中添加一些狗,这样您就可以测试函数,而不必每次都添加一个新的狗,这就是我迷路的地方!如果我在setUp()中编写构造器(Dog =新的Dog("Alex","Pug",10,10.0) ),我会得到错误消息:

The value of the local variable Dog is not used

我也尝试过将构造函数放在"1“的情况下,这样我就不会收到任何错误,但是没有将狗添加到数组列表中,而我可以在程序中添加新的狗。我真的不知道下一步该怎么做。需要将狗添加到分配的狗构造函数中(部分代码被裁剪为相关的,不用担心导入或main)。

代码语言:javascript
复制
class DogReg {
private ArrayList<Dog> allDogs = new ArrayList<Dog>();
private Scanner keyboard = new Scanner(System.in);

private void setUp() {
    System.out.print("Hi! Welcome to the Dog register! \n" + "Choose an option between 1-5\n");
    System.out.println("1. Register your dog");
    System.out.println("2. Increase age");
    System.out.println("3. List");
    System.out.println("4. Delete");
    System.out.println("5. Exit");
}

private void runCommandLoop() {

    // Initierar en while-loop som körs under tiden att willRun == true
    boolean willRun = true;
    while (willRun == true) {

        System.out.print("> ");

        // Skapar en variabel som konverterar input-sträng till lowerCase
        String command = keyboard.next();
        switch (command) {

        case "1":
            // Konstruerar en ny hund in i ArrayList
            Dog Dog = new Dog();
            // Sparar all input till ArrayList
            System.out.print("\nThe name of the dog: ");
            Dog.setName(keyboard.next());
            System.out.print("The breed of the dog: ");
            Dog.setBreed(keyboard.next());
            System.out.print("The age of the dog: ");
            int age = keyboard.nextInt();
            Dog.setAge(age);
            System.out.print("The weight of the dog: ");
            double weight = keyboard.nextDouble();
            Dog.setWeight(weight);
            allDogs.add(Dog);
            break;    

类狗{

代码语言:javascript
复制
private String name;
private String breed;
private int age;
private double weight;

public Dog (String name, String breed, int age, double weight){
    this.name = name;
    this.breed = breed;
    this.age = age;
    this.weight = weight;
}

public String getName() {
    return name;
}

public String getBreed() {
    return breed;
}

public int getAge() {
    return age;
}

public double getWeight() {
    return weight;
}

public void setName(String name) {
    this.name = name;
}

public void setBreed(String breed) {
    this.breed = breed;
}

public void setAge(int age) {
    this.age = age;
}

如果我使用这段代码,我可以在setUp()中添加一个狗,但是我们不应该使用该代码:

代码语言:javascript
复制
Dog Dog = new Dog();
Dog.setName("Bosse");
Dog.setBreed("Mops");
int age = 10;
Dog.setAge(age);
double weight = 10;
Dog.setWeight(weight);
allDogs.add(Dog);

希望它足够清楚,我为语法和/或拼写道歉,英语不是我的第一语言。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-09 14:45:09

把你的狗变量命名为不同的东西。您将变量命名为与对象名称相同的名称,这会使编译器感到困惑。试试看,例如:

代码语言:javascript
复制
Dog newDog = new Dog();
newDog.setName("Bosse");
newDog.setBreed("Mops");
int age = 10;
newDog.setAge(age);
double weight = 10;
newDog.setWeight(weight);
allDogs.add(newDog);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41062866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档