当我运行此代码时,
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class Posting
{
String title;
}
public class Test
{
Posting[] dew()
{
Posting[] p = new Posting[100];
for(int i = 0; i <p.length; i++)
{
p[i].title = "this is " + i;
}
return p;
}
public static void main(String args[])
{
Test t = new Test();
Posting[] out = t.dew();
for(int i = 0; i < out.length; i ++)
{
System.out.println(out[i].title);
}
}
}
我收到此错误, 运行:
Exception in thread "main" java.lang.NullPointerException
at mistAcademic.javaProject.newsBot.core.Test.dew(Test.java:20)
at mistAcademic.javaProject.newsBot.core.Test.main(Test.java:29)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
你能有任何想法吗?
答案 0 :(得分:11)
在设置数组之前,必须先初始化数组元素。
p[i] = new Posting(/* ... */);
// THEN set the fields
p[i].title = /* ... */;
答案 1 :(得分:9)
Posting[] p = new Posting[100];
这只会创建数组本身,所有条目都设置为null
。
所以你需要创建实例并将它们放入数组中。
for( int i = 0; i <p.length ; i++ )
{
p[i] = new Posting(); // <= create instances
p[i].title = "this is " + i ;
}
答案 2 :(得分:4)
你必须初始化你的帖子
Posting[] dew()
{
Posting[] p = new Posting[100];
for( int i = 0; i <p.length ; i++ )
{
p[i] = new Posting();
p[i].title = "this is " + i ;
}
return p ;
}
答案 3 :(得分:1)
您需要初始化数组的每个对象。在
之前添加以下行p[i] = new Posting();
p[i].title = "this is " + i ; in the for loop.
答案 4 :(得分:0)
通过执行:Posting[] p = new Posting[100];
将创建一个包含100个空对象的数组。 p [0],p [1],p [2] ..... p [99] = null 所以当你这样做时:
p[i].title
它实际上与:null.title
相同
因此你得到NullPOinterException。