我一直在與這個爭鬥一段時間,似乎越來越沒有。設置是如此;我有一個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方法工作正常。我正努力從bubbles()方法中獲取tempArray。如果我將輸出設置爲tempArray,它將僅返回爲原始數組右下角計算的5個值。
我打過電話,以便完成所有的處理存在,並返回一個新的數組其他方法進入氣泡()方法:
//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;
}
再次失敗,且輸出從datap就是零。上面的sort()方法傳遞出對角線的冒泡排序方法(我知道作品的
我想我的問題是如何在迭代的方法中處理和填充新的陣列?
我希望這是有道理的,但如果你需要更多細節,請讓我知道。是的,我使用的是泡沫排序。我知道他們是垃圾,但這是我的一個課程,所以它必須是使用的是的,我很新到Java
任何幫助,將不勝感激。(我甚至會參考你,如果我需要使用一些代碼,您提供的;)
感謝您的快速響應。我一直在嘗試這個,現在拋出一個ArrayIndexOutOfBoundsException 298.在我的方法中,我已經拖延了數組[298] [298],所以爲什麼它應該超出我不確定的範圍。 –