Java 启动时程序中的条目

Java 启动时程序中的条目,java,constructor,Java,Constructor,这就是它现在的样子。不是整个版本,而是我的问题所在 我希望在程序启动时有两条狗被添加到register/arraylist中 boolean toEnd = false; Scanner keyboard = new Scanner(System.in); ArrayList<Dog> dogRegister = new ArrayList<Dog>(); while (toEnd == false){ System.out.println("\nWhat w

这就是它现在的样子。不是整个版本,而是我的问题所在

我希望在程序启动时有两条狗被添加到register/arraylist中

boolean toEnd = false;
Scanner keyboard = new Scanner(System.in);
ArrayList<Dog> dogRegister = new ArrayList<Dog>();

while (toEnd == false){

    System.out.println("\nWhat would you like to do? \n Press 1 to register
        a dog. \n Press 2 to get a look at the taillengths of the dogs. \n Press
        3 to delete a dog from the register.\n Press 4 to quit.");
        int command = keyboard.nextInt(); //alternatives stored in "command"

    switch (command){ //Execute chosen command in switch-statement

        case 1: //User registers a dog 

        Dog d1 = new Dog(); 

        Dog d2 = new Dog("Mira", "Miniature Schnauzer", 1, 8);
        Dog d3 = new Dog("Jack", "Jack Russell", 3, 6);   
        Dog d4 = new Dog("Charlie", "Pug", 5, 5);
        Dog d5 = new Dog("Max", "Dachshund", 9, 5);
        Dog d6 = new Dog("Bingo", "Golden Retriever", 5, 12);
    }
}

您必须自己定义一个无参数构造函数:

public Dog() {
    // Code
}
由于您定义了一个重载的构造函数,编译器不会为您创建一个默认的,因此您会得到错误

您可以使用重载构造函数实例化您的
s,或者使用默认构造函数加上setter:

Dog dog = new Dog(name, race, fage, fweight, taillength);
// or
Dog dog = new Dog();
dog.setName(name);
dog.setRace(race);
...
加上

   Dog(){
    }

into Dog class.
通常,编译器会给出构造函数,但只有在这种情况下 不要定义任何一个,这里您定义了一个参数化的 构造函数,所以编译器不会给出任何默认构造函数,所以 要么在顶部添加我建议的默认构造函数,要么始终使用 具有正确参数的新对象


在类
Dog
中,您正在创建一个包含字段的构造函数,但您应该创建一个不包含字段的构造函数,如下所示:

  public Dog(){....}
 Dog dog = new Dog();
然后您可以在另一类测试中使用它,如下所示:

  public Dog(){....}
 Dog dog = new Dog();

您需要创建一个默认构造函数Dog(),欢迎使用堆栈溢出。在将来,请尽量减少你发布的代码,这只会说明你所面临的问题。在本例中,您已经发布了近150行代码,但我怀疑您可以将其减少到大约20行。这样做通常足以解决你自己的问题;在我的dogclass中是否有我的testprogram和public Dog()