私はしばらくの間これと戦ってきました、そしてどこにも行かないようです。セットアップはそうです。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;
}
繰り返しますが、これは失敗し、出力datapはゼロになります。上記のsort()メソッドは、対角線をバブルソートメソッドに渡しました(これは、
私の質問は、新しい配列を反復して移入するメソッド内でどのように処理するかということだと思います。
これが理にかなっていることを願っていますが、詳細が必要な場合はお知らせください。はい、私が使用しているソートはバブルソートです。ゴミだとは思いますが、これは私がやっているコースのためのものなので、使わなければなりません。そして、はい、私はJavaにかなり慣れていません。
任意の助けをいただければ幸いです(そして、あなたが提供するコードを使用する必要がある場合は、あなたを参照することもできます;)