Java 对象数组的问题
我正在学习java,并尝试了一些东西。这就是我想做的 我试图创建一个对象数组的表。 e、 我正在创建一个名为animal的对象,我可以根据用户的选择添加任意数量的动物及其品种Java 对象数组的问题,java,arrays,arraylist,nullpointerexception,Java,Arrays,Arraylist,Nullpointerexception,我正在学习java,并尝试了一些东西。这就是我想做的 我试图创建一个对象数组的表。 e、 我正在创建一个名为animal的对象,我可以根据用户的选择添加任意数量的动物及其品种 package tt; import java.util.Scanner; public class animal { String aname; String abreed; public animal() { mainprog aa = new mainprog();
package tt;
import java.util.Scanner;
public class animal {
String aname;
String abreed;
public animal() {
mainprog aa = new mainprog();
System.out.printf("eneter name of your %s..\n", aa.Animalcat);
Scanner name = new Scanner(System.in);
aname = name.nextLine();
System.out.printf("eneter breed of your %s..\n", aa.Animalcat);
Scanner breed = new Scanner(System.in);
abreed = breed.nextLine();
}
public String getbreed() {
return abreed;
}
public String getname() {
return aname;
}
}
所以主程序要求我添加多少动物
package tt;
import java.util.Scanner;
public class mainprog {
public static String Animalcat;
public static void main(String[] args) {
System.out.println("How many animals you want to add..");
Scanner an = new Scanner(System.in);
int animalNumbers = an.nextInt();
animal[][] addAnimal = new animal[animalNumbers][1];
animaltype[] at = new animaltype[animalNumbers];
for (int i = 0; i < animalNumbers; i++) {
at[i] = new animaltype();
Animalcat = at[i].getAnimalType();
for (int j = 0; j < 1; j++) {
addAnimal[i][j] = new animal();
}
}
Display(addAnimal, at);
}
public static void Display(animal x[][], animaltype y[]) {
System.out.println("Your animals are..");
for (int m = 0; m < x.length; m++) {
System.out.printf("Following are the name and the breed of %s ",
y[m].getAnimalType());
System.out.println();
for (int n = 0; n < x[m].length; n++) {
System.out.printf(" %s", x[m][n].aname);
System.out.printf(" %s", x[m][n].abreed);
System.out.println();
}
}
}
}
我在这里遇到的问题是,我可以要求添加多少种动物,但我无法控制要添加多少种动物。
在添加动物时,我只能通过声明为[1]手动添加1个动物,而不能通过用户输入
addAnimal = new animal[animalNumbers][1];
问题在于我是否可以通过声明animal[][]addAnimal=null来实现这一点代码>然后使用类似的方法初始化它:
animal[][] addAnimal = new animal[animalNumbers][animaltypenumbers];
但我总是得到NullPointerException
。是否还有其他方法可以完成此操作?创建数组时,它将由它包含的元素的默认值填充。由于Animal
是一个对象
,因此它将由null
值填充,并且不能使用任何具有null
值的变量。因为您只是在当前代码中填充animal[i][0]
,所以不会有任何问题。但当您尝试访问动物[i][1]
时,它会出现。这发生在Display
方法中:
public static void Display(animal x[][], animaltype y[]) {
System.out.println("Your animals are..");
for (int m = 0; m < x.length; m++) {
System.out.printf("Following are the name and the breed of %s ",
y[m].getAnimalType());
System.out.println();
for (int n = 0; n < x[m].length; n++) {
//you only filled elements in x[m][0]
//x[m][n] when n > 0 is null
//so you will get NullPointerException
System.out.printf(" %s", x[m][n].aname);
System.out.printf(" %s", x[m][n].abreed);
System.out.println();
}
}
}
更好的选择:
使用由ArrayList
支持的List
,而不是Animal[]
<代码>列表
让我们来处理动态增长的元素列表
public static void main(String[] args) {
System.out.println("How many animals you want to add..");
Scanner an = new Scanner(System.in);
int animalNumbers = an.nextInt();
List<Animal> animals = new ArrayList<Animal>();
for (int i = 0; i < animalNumbers; i++) {
Animalcat = new animaltype();
animals.add(Animalcat);
}
Display(animals);
}
//modify Display method accordingly
publicstaticvoidmain(字符串[]args){
System.out.println(“要添加多少动物…”);
扫描仪an=新的扫描仪(System.in);
int animalNumbers=an.nextInt();
列出动物=新建ArrayList();
对于(int i=0;i
AnimalTypeNumber的值是多少?价值从何而来?非常感谢您提供的信息。但我需要一个数组的数组,因为我的对象像addAnimal={{dogs},{cat},{lions},{tigers};我想我肯定需要一组array@user3109806如果这篇文章对您有所帮助,请不要忘记。@user3109806若要在注释中发布代码,请使用`character:像这样将其括起来。
@user3109806多么奇怪的设计啊。不管怎样,如果你喜欢这样,那就继续吧!我的爪哇很烂。。我正在youtube上拍摄视频教程。我学习java做得对吗?告诉我开始学习java的最好方法,也许你们可以给我指一些好书。。
public static void main(String[] args) {
System.out.println("How many animals you want to add..");
Scanner an = new Scanner(System.in);
int animalNumbers = an.nextInt();
animal[] addAnimal = new animal[animalNumbers];
animaltype[] at = new animaltype[animalNumbers];
for (int i = 0; i < animalNumbers; i++) {
//at[i] = new animaltype();
//Animalcat = at[i].getAnimalType();
Animalcat = new animaltype();
//for (int j = 0; j < 1; j++) {
// addAnimal[i][j] = new animal();
//}
addAnimal[i] = Animalcat;
}
Display(addAnimal, at);
}
//modify Display method accordingly
public static void main(String[] args) {
System.out.println("How many animals you want to add..");
Scanner an = new Scanner(System.in);
int animalNumbers = an.nextInt();
List<Animal> animals = new ArrayList<Animal>();
for (int i = 0; i < animalNumbers; i++) {
Animalcat = new animaltype();
animals.add(Animalcat);
}
Display(animals);
}
//modify Display method accordingly