gpt4 book ai didi

java - 为什么这段代码会导致 NullPointerException?

转载 作者:行者123 更新时间:2023-12-01 08:12:07 25 4
gpt4 key购买 nike

我编写了一个代码,用于迭代来自 java.awt.Point 的 Point 类型对象的一维数组。我尝试用 array[iterator].x=iterator 来填充数组中每个 Point 的 x 和 y 实例变量。

代码

package onmap;

import java.awt.Point;

public class OnMap {

public static void main(String[] args) {

int width=50;
int height=50;
int area = width * height;
int xn;
int yn;
int i=0;
int t=0;
Point[] map;
map = new Point[area];
map[i].x=0;
System.out.print("first x:" + map[i].x);


for (int n=0; n<area-1;n++){
if (i==width)
{i=0; t++;}
map[n].x=i;
map[n].y=t;
i++;
}

for (int n=0;n<area-1;n++){
xn = map[n].x;
yn = map[n].y;
System.out.print("x: " + xn);
System.out.print(" y: "+yn);
System.out.println(" n: "+n);
}


}

}

我不明白。为什么我会收到空​​指针异常?
(Netbeans 7.3、Java7)

最佳答案

因为当你初始化时

    Point[] map;
map = new Point[area];

它包含所有空引用。它创建一个 Point 数组,数组中的每个元素默认初始化为 Point element=null。因此,当您尝试 map[0].x 它显然会抛出 NullPointerExceptionmap[0]==null。引用JLS ,这告诉我们 Java 中的基本类型总是零初始化的。引用被初始化为 null。因此,在引用数组中,每个元素的默认值都将是 null 引用。

您需要更改您的线路,如下所示:

Point[] map;
map = new Point[area];
map[i] = new Point();
map[i].x=0;

关于java - 为什么这段代码会导致 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16504848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com