Евклидово расстояние в трехмерной комнате - на основе двумерного массива в Java - PullRequest
0 голосов
/ 03 ноября 2019

Я хотел бы рассчитать расстояния между точками в трехмерной комнате, которые хранятся в двумерном массиве. Точки генерируются случайным образом, и мы предполагаем, что для всех точек возможно, что они находятся в трехмерном пространстве. Точки будут иметь три параметра, как показано здесь: [[3.0, 5.0, 8.0], [6.0, 5.0, 4.0], [3.0, 3.0, 9.0], [8.0, 0.0, 3.0]]

Я зашел так далеко, как мне кажется, но я, похоже, ошибаюсь. Есть ли у вас какие-либо предложения? Я получаю индекс вне границ.

Публичный класс Очки {

public static class points {

    static String distanceBetweenPoints(int a) {
        // int a = number of Points

        int columns = 3;
        // every point has three coordinates x,y,z 

        double[][] points = new double[a][columns];

        // generating the points with random method:

        for (int i = 0; i < a; i++) {
            for (int j = 0; j < columns; j++) {
                points[i][j] = (int) (Math.random() * 10);
            }
        }

        double[][] distances = new double[points.length][points.length];

        for (int i = 0; i < distances.length; i++) {
            for (int j = 0, k = 0; j < distances.length; j++ )
                for (int l = 0, m = 0; j < points[0].length; l++, m++) {
                    distances[i][j] = Math.sqrt((Math.pow((points[i][k] - points[l][k]),2)
                            + Math.pow((points[j][1] - points[l][1]), 2)
                            + Math.pow((points[j][2] - points[l][2]), 2)));

            }
    }

        return Arrays.deepToString(distances);
}

    public static void main(String[] args) {

        System.out.println(distanceBetweenPoints(4));
    }
}

}

1 Ответ

1 голос
/ 03 ноября 2019

Ввод простого

System.out.println( String.format( "i: %d, j: %d, k: %d, l: %d, m: %d", i, j, k, l, m) ); 

в ваш код покажет вам вашу ошибку сразу. В четвертой итерации внутреннего цикла l получает 4, что больше, чем размер массива точек.

У вас беспорядок, индексы которого в каком цикле объявлены, проверены и увеличены.

...