我在main方法中有行NullPointerException,行
array[0].name = "blue";
结构类:
public class Items {
String name = "";
String disc = "";
}
主类:
public class ItemsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Items[] array = new Items[2];
array[0].name = "blue"; //NullPointerException
array[0].disc = "make";
array[1].name = "blue";
array[1].disc = "blue";
}
}
请帮我解决此问题。
答案 0 :(得分:2)
Items[] array = new Items[2];
您必须初始化数组的每个元素,默认情况下它们是null
制作它,
Items[] array = new Items[2];
//initialization
array[0] = new Items();
array[0].name = "blue"; //NullPointerException
array[0].disc = "make";
//initialization
array[1] = new Items();
array[1].name = "blue";
array[1].disc = "blue";
答案 1 :(得分:1)
当你写下这一行时:
Items[] array = new Items[2];
您初始化了一个包含2个元素的Items类型的数组,换句话说,您只是初始化了容器。
数组中的每个元素都是一个对象,还需要初始化,在处理array[0].name
时,您尝试访问当前null
的内部元素
如果你检查Jigar Joshi answer,你会看到他也初始化数组中的每个Items元素。
希望这有帮助!
答案 2 :(得分:0)
Items[] array = new Items[2]; // Creates an array of Items with null values
因此必须使用
Items[] array = { new Items(), new Items() }; // as suggested by aioobe....
或需要初始化数组,如
array[0] = new Items();