Индексация и размерность массива

314
23 декабря 2016, 12:51

Добрый день) Есть метод, который получает на вход вектор 100х1 и матрицу 100х100 и рассчитывает расстояние между ними. Также 2 переменные p1 и p2 (w = 100). Переменные введены для того, чтобы указывать размерность массивов. Для первого случая нам необходимо найти расстояние матрицы 80х100, поэтому переменные p1 = 0, p2 = 79. Для второго найти расстояние 20х100, p1 = 80, p2 = 99. Проблема в том, что когда я ищу расстояние для массива 20х100 и дохожу до этой строки

distance[i] = Math.round(Math.sqrt(rezult));

то тут я хочу обратится к 80 елементу, хотя мой массив состоит только с 20) Не могу сообразить как переписать индексацию массива, чтобы выводить еллементы по 20? Думала как-то вроде так:

distance[p2 - p1 - i] = Math.round(Math.sqrt(rezult));

но не работает), не хочется костыли писать)

Код метода:

double[] distance(int[] etalonVector, int[][] convertToMatrix, int p1, int p2){
int[] etalon = etalonVector;
        int [][] matrix = convertToMatrix;
        double [] distance = new double[p2 - p1 + 1];
        for (int i = p1; i < p2; i++){
            double rezult = 0;
            for (int j = 0; j < w; j++){
                 rezult+= Math.pow(etalon[i] - matrix[i][j], 2);
                  }
            try {
                distance[p2 - p1 - i] = Math.round(Math.sqrt(rezult));
            } catch(ArrayIndexOutOfBoundsException e){
                System.out.println("exception when " + i);
            }
            }
        return distance;
    }
Вывод:
exception when 80
exception when 81
exception when 82
exception when 83
exception when 84
exception when 85
exception when 86
exception when 87
exception when 88
exception when 89
exception when 90
exception when 91
exception when 92
exception when 93
exception when 94
exception when 95
exception when 96
exception when 97
exception when 98
exception when 80
exception when 81
exception when 82
exception when 83
exception when 84
exception when 85
exception when 86
exception when 87
exception when 88
exception when 89
exception when 90
exception when 91
exception when 92
exception when 93
exception when 94
exception when 95
exception when 96
exception when 97
exception when 98
Answer 1

На сколько я понял логику, в distance последовательно должны попасть расчитанные элементы. Есть два варианта решения:

  1. Изменить distance[p2 - p1 - i] на distance[i-p1]
  2. Используйте List.add()
READ ALSO
Взаимодействие с сайтом через Android приложение

Взаимодействие с сайтом через Android приложение

Стоит задача обработать этот сайтКонкретнее, надо вставить фамилию преподавателя в форму и получить меню, где надо выбрать преподавателя,...

422
Java 8 DateTimeFormatter. Как задать pattern для записи даты Apache access log-a?

Java 8 DateTimeFormatter. Как задать pattern для записи даты Apache access log-a?

Пытаюсь создать паттерн чтобы разобрать дату/время Apache Access Log-aПример

381
Условие закрытие пула потоков

Условие закрытие пула потоков

Есть вот такой вот участок кода:

308