【问题标题】:Method returning one index of an array throws NullPointer返回数组的一个索引的方法会抛出 NullPointer
【发布时间】:2014-04-25 17:53:47
【问题描述】:

在为学校编写程序时,我创建了一个方法,该方法根据您为该方法提供的值返回数组的索引。该方法会引发 NullPointerException 但在数组的每个索引中都已被实例化。为了展示这一点,我创建了一个执行相同操作的测试程序。

public class Test {
private static Number[] numbers = new Number[16];

public static void main(String[] args) {
    new Test();
}

public Test() {
    for (Number n : numbers) {
        n = new Number(0);
    }
    System.out.println(get(0).value);
}

public Number get(int index) {
    return numbers[index];
}

class Number {
    public int value;

    public Number(int value) {
        this.value = value;
        }
    }
}

运行时应该打印整数“值”的值,在这种情况下,对象位于数组的第一个位置。

我确信对此有一个简单的解释,但我不知道这个问题。

【问题讨论】:

    标签: java arrays nullpointerexception return


    【解决方案1】:

    您必须使用for-each 循环进行只读通行证。目前,在您的构造函数中,数组中的元素仍未初始化,因此出现错误。

    所以改成普通的for循环吧。

    for(int i = 0; i < numbers.length; i++){
        numbers[i] = new Number(0);
    }
    

    【讨论】:

    • 非常感谢!我不知道 for each 循环的行为与常规 for 循环不同。
    • @piechesse 是的,你可以阅读我提供的链接,特别是在最后 ;)
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多