如何在Java中修复dispatchUncaugthException

我试图生成具有随机数的数组,但是它继续显示dispatchUncaughtException。我对Java完全陌生,有人可以帮我解决这个问题吗?

我写的代码如下:

public class FindfreieGroundwaterlevel {

    public static void main(String[] args) {
        double[] groundwaterDistance = {-0.01,1.2,4.5,6.3,8.2,-1.7,2.1,0};
        int [] index = new int [groundwaterDistance.length]; 
        int zero = 0;
        for (int n = 0; n < groundwaterDistance.length; n++ ) {   
            if (groundwaterDistance[n] == 0) {
                index[n] = n; 
            }else{
                index[n] = 0;
                zero++;
            }
        }             
        int[] newindex = new int[index.length - zero];
        int j = 0;
        for(int m : index) {
            if( m!= 0 ) {
               newindex[j] = m;
               j++;             
            }
        }   
        for (int i: newindex) {
            System.out.println(i);
        }

        Random generator = new Random(10);
        Coordinate[] position = new Coordinate[20];
        for (int i = 0; i <position.length; i++) {
            position[i].x = generator.nextDouble();
            System.out.println("x :" + position[i].x);
            position[i].y = generator.nextDouble();
            System.out.println("y :" + position[i].y);
            position[i].z = generator.nextDouble();
            System.out.println("z :" + position[i].z);            
        }
    }   
}

另一个名为Coordiante的类是:

public class Coordinate {
    public double x;
    public double y;
    public double z;
}

这是我得到的异常的图像:

Exception image

xjj070324why 回答:如何在Java中修复dispatchUncaugthException

您的调试器将在异常处停止,因此您不会收到异常消息。如果继续执行,将会看到NullPointerException。这是因为您创建了一个空的Coordinate[],然后尝试为null元素分配值。

您需要在数组中创建一个new Coordinate()。如果您创建一个采用x,y,z值的构造函数,则可能就像

for (int i = 0; i <position.length; i++) {
    position[i] = new Coordinate(generator.nextDouble(),generator.nextDouble(),generator.nextDouble());
}

如果您不知道如何使用构造函数,请开始阅读basic tutorial。要在没有合适的构造函数的情况下继续运行,以下代码会做同样的事情

for (int i = 0; i <position.length; i++) {
    position[i] = new Coordinate();
    position[i].x = generator.nextDouble();
    position[i].y = generator.nextDouble();
    position[i].z = generator.nextDouble();
}
本文链接:https://www.f2er.com/3167121.html

大家都在问