我是java编程的初学者。我正在尝试开发一个程序,但是当我运行下面发布的程序时,它又出现了这个错误:
线程“main”java.lang.NullPointerException中的异常 at dist.main(dist.java:13)
import java.lang.Math;
class Point {
int x; int y;
}
public class dist {
public static void main(String[] args) {
Point[] pt = new Point[3];
pt[0].x = 40; pt[0].y = 40;
pt[1].x = 40; pt[1].y = 30;
pt[2].x = 26; pt[2].y = 30;
for(int i = 0 ;i < pt.length ; i ++){
pt[i] = new Point();
}
int ux = pt[0].x - pt[1].x;
System.out.println("ux:" + ux);
}
}
答案 0 :(得分:3)
通过以下行,您只需创建一个3参考数组,默认情况下具有null
值
point []pt=new point [3];
您需要使用new
初始化对象的每个引用,如下所示
for(int index = 0 ;index < pt.length ; index ++){
pt[index] = new Point();
}
答案 1 :(得分:2)
这是因为您创建了可以容纳3个点的数组,但在尝试访问它们之前,您不会自己创建这些点。
你必须这样做:
point []pt=new point [3];
pt[0] = new point();
pt[0].x=40; pt[0].y=40;
pt[1] = new point();
pt[1].x=40; pt[1].y=30;
pt[2] = new point();
pt[2].x=26; pt[2].y=30;
但是在你学习的时候,你应该习惯java代码风格。类以大写字母开头,使用正确的缩进,并且尽快查看构造函数。例如,添加像
这样的构造函数 Point(int x, int y) {
this.x = x;
this.y = y;
}
到你的Point课程可以让你像
那样初始化你的分数 Point[] points = new Point[] { new Point(40,40), new Point(40,30), new Point(26,30) };
也是这一行
int ux=pt[n].x-pt[1].x;
甚至不应该在没有被声明的地方编译。
玩得开心学习Java!
PS:按照其他答案的建议在循环中创建点当然是更干的方法。
答案 2 :(得分:0)
创建对象数组不会在数组中创建对象。
在访问数组元素之前,您需要先执行此操作:
for (int i = 0; i < point.length; i++) {
pt[i] = new point();
}
答案 3 :(得分:0)
PT [0] = .X 40; PT [0] .Y = 40; pt数组为null,你试图得到第0个位置记录并分配它。这是它给出空指针异常的方式,如果你希望通过下面给出的代码行
point p=new point();
pt[0]=p
pt[0].x=40; pt[0].y=40;