当我尝试向a1 [i]数组添加值时,我不明白为什么这会给我一个空指针异常。
public class Array {
String text;
int total = 0, count = 0;
Array[] a1 = new Array[100];
Scanner scan = new Scanner(System.in);
public void setData() {
int i=0;
System.out.println(a1.length);
do {
System.out.println("Enter some data: ");
text = scan.next();
if (text.equals("end"))break;
a1[i].text = text; //I get a null pointer exception here. Not sure why.
i++;
} while (true);
}
答案 0 :(得分:2)
a1
数组中初始化的所有内容均为null
。在使用成员方法执行任何操作之前,您必须在其中放置Array()
的新实例。
这意味着:每当您想要使用a1[i]
执行某些操作时,您必须先在其中设置Array
的新实例。
示例:
for(int i = 0; i < n; i++) {
a1[i] = new Array();
}
答案 1 :(得分:0)
因为a1 [i]中没有存储对象。你在这一行基本上说的是:
null.text = text
每次都会破坏
答案 2 :(得分:0)
你得到一个空指针异常,因为你已经为100个数组元素分配了空间,但你仍然需要初始化它们:
因此,在访问a1[i].text
之前,您需要通过调用a1[i] = new Array()
另外我很确定,你确实想创建一些其他类型的对象,而不是Array
。正如我所理解的那样,对您当前正在编写的类进行数组,因此您可能希望有多个String
,例如:串[]。
我建议你改用LinkedList。
答案 3 :(得分:0)
Array[] a1 = new Array[100]; //here you just create an array of references to objects which are set to null
a1[i].text = text; //before this line you should assign to a1[i] a reference to Array object for example a1[i] = new Array();