Я боролся с этим в течение некоторого времени и, похоже, ничего не получилось. Настройка такова; У меня есть 2D-массив. Для этого массива мне нужно перебрать каждое значение и вернуть диагональных соседей (5 значений). Эти соседи будут помещены в новый массив 1D [5] и отсортированы по пузырькам. Среднее значение (медиана) будет затем возвращено и помещено в новый массив медиан.
Пока у меня есть методы для извлечения диагональных соседей:
//get diagonals from original DEM
double [] getDiagonals(int i, int j) {
double [] tempArray = new double [5];
tempArray[0] = data[i -1][j +1];
tempArray[1] = data[i -1][j -1];
tempArray[2] = data[i][j];
tempArray[3] = data[i +1][j -1];
tempArray[4] = data[i +1][j +1];
return tempArray;
}
Затем я использовал этот метод в итерации, чтобы получить диагонали для каждого значения в исходном массиве:
//get diagonals for each
double [] [] bubbles(){
double [] [] datap = new double [298] [298];
for (int i = 1; i < data.length; i++){
for (int j = 1; j < data[i].length; j++) {
if ((i > 0) && (j > 0)) {
if ((i < data.length-1) && (j < data.length-1)){
double [] tempArray = getDiagonals(i, j);
//do something with the tempArray
Я думаю, что именно здесь я отклеиваюсь. Благодаря тестированию метод getDiagonals работает нормально. Я изо всех сил пытаюсь получить tempArray из метода bubbles (). Если я устанавливаю выходные данные как tempArray, он возвращает только 5 значений, рассчитанных для нижнего правого угла исходного массива.
Я пытался вызывать другие методы в методе bubbles (), чтобы выполнить всю обработку там и вернуть новый массив:
//get diagonals for each
double [] [] bubbles(){
double [] [] datap = new double [298] [298];
for (int i = 1; i < data.length; i++){
for (int j = 1; j < data[i].length; j++) {
if ((i > 0) && (j > 0)) {
if ((i < data.length-1) && (j < data.length-1)){
double [] tempArray = getDiagonals(i, j);
double sorted [] = sort(tempArray);
double median = sorted[2];
for (int z = 0; z < datap.length; z++){
for (int y = 0; y < datap[z].length; y++){
datap[z][y] = median;
}
}
}
}
}
}
return datap;
}
Опять же, это не получается, и выходной массив данных - просто нули. Приведенный выше метод sort () передал диагонали методу пузырьковой сортировки (который, как я знаю, работает на его
Полагаю, мой вопрос заключается в том, как обработать итеративный метод и заполнить новый массив?
Надеюсь, это имеет смысл, но если вам нужно больше подробностей, пожалуйста, дайте мне знать. И да, я использую пузырьковую сортировку. Я знаю, что это мусор, но это курс, который я делаю, поэтому его нужно использовать. И да, я довольно новичок в Java.
Любая помощь будет принята с благодарностью (и я даже буду ссылаться на вас, если мне понадобится использовать какой-то код, который вы предоставляете;)