首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >空指针异常

空指针异常
EN

Stack Overflow用户
提问于 2011-06-29 05:19:26
回答 4查看 232关注 0票数 0

我正在用java做一些项目。在这里,我被困在这个问题上,无法找出我哪里出了问题。

我上了两门课:TestChild

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

代码语言:javascript
运行
复制
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]);
        }
    }
}

代码语言:javascript
运行
复制
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;
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-29 05:20:49

问题是:

代码语言:javascript
运行
复制
String[] a = null;
a[0]="This";

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

代码语言:javascript
运行
复制
String[] a = new String[4];
a[0]="This";

如果您不知道您的集合在开始填充它之前应该有多少个元素(甚至经常是这样),我建议使用某种类型的List。例如:

代码语言:javascript
运行
复制
List<String> a = new ArrayList<String>();
a.add("This");
a.add("is");
a.add("not");
a.add("working");
return a;

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

代码语言:javascript
运行
复制
int i=0;
while(i<b.length)
    System.out.println(b[i]);

您永远不会更改i,所以它将始终是0--如果您完全进入while循环,您将永远无法摆脱它。你想要这样的东西:

代码语言:javascript
运行
复制
for (int i = 0; i < b.length; i++)
{
    System.out.println(b[i]);
}

或更好:

代码语言:javascript
运行
复制
for (String value : b)
{
    System.out.println(value);
}
票数 13
EN

Stack Overflow用户

发布于 2011-06-29 05:21:43

这就是问题所在:

代码语言:javascript
运行
复制
String[] a = null;
a[0]="This";
票数 4
EN

Stack Overflow用户

发布于 2011-06-29 05:29:27

他们强调了您可能需要定义的空指针异常的问题,这会让您知道将来在哪里和什么地方可以找到这个问题。在java中,它定义了什么是npe以及在什么情况下抛出npe。希望它能帮到你。

在需要对象的情况下,应用程序尝试使用null时引发。其中包括:

代码语言:javascript
运行
复制
* Calling the instance method of a null object.
* Accessing or modifying the field of a null object.
* Taking the length of null as if it were an array.
* Accessing or modifying the slots of null as if it were an array.
* Throwing null as if it were a Throwable value. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6516072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档