Java 启动时程序中的条目
这就是它现在的样子。不是整个版本,而是我的问题所在 我希望在程序启动时有两条狗被添加到register/arraylist中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
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()