空指针异常

Pan*_*hal 0 java

我正在研究java中的一些项目.在这里,我坚持这个问题,无法弄清楚我哪里出错了.

我做了两个课:TestChild.

当我运行代码时,我得到一个NullPointerException.

package com.test;
public class Test {

    child newchild = new child();
    public static void main(String[] args) {
        new Test().method();
    }
    void method() {
        String[] b;
        b = newchild.main();
        int i = 0;
        while (i < b.length) {
            System.out.println(b[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
package com.test;
public class child {
    public String[] main() {
        String[] a = null;
        a[0] = "This";
        a[1] = "is";
        a[2] = "not";
        a[3] = "working";
        return a;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 13

这是问题所在:

String[] a = null;
a[0]="This";
Run Code Online (Sandbox Code Playgroud)

您将立即尝试取消引用a(null),以便在其中设置元素.您需要初始化数组:

String[] a = new String[4];
a[0]="This";
Run Code Online (Sandbox Code Playgroud)

如果您在开始填充之前不知道您的集合应该有多少元素(通常即使你这样做),我建议使用List某种元素.例如:

List<String> a = new ArrayList<String>();
a.add("This");
a.add("is");
a.add("not");
a.add("working");
return a;
Run Code Online (Sandbox Code Playgroud)

请注意,这里有另一个问题:

int i=0;
while(i<b.length)
    System.out.println(b[i]);
Run Code Online (Sandbox Code Playgroud)

你永远不会改变i,所以它总是 0 - 如果你完全进入while循环,你将永远不会离开它.你想要这样的东西:

for (int i = 0; i < b.length; i++)
{
    System.out.println(b[i]);
}
Run Code Online (Sandbox Code Playgroud)

或更好:

for (String value : b)
{
    System.out.println(value);
}
Run Code Online (Sandbox Code Playgroud)