現在、プログラムでこのコードに取り組んでいますが、問題は 2 次元の内部ループを停止する行にあるようです。
これは配列のサンプル出力です
- 9 6 6
- 7 6 4
- 4 8 5
このコードを実行すると、出力は次のようになります。
- 4 4 6
- 5 6 6
- 7 8 9
私の期待される出力は次のとおりです。
- 4 4 5
- 6 6 6
- 7 8 9
a digit:"6" は正しい場所にありません。for ループの上にネストされた for ループがある部分を実行しようとすると、1 回しか実行されないため、6 である 3 番目の列に到達するのではなく、1 番目の列のみをチェックするためです。問題は、行#0 列#0 から行#2 列#0 までの最大数のみを読み取るようにそのループを制限する必要があることです。
この問題を解決するにはどうすればよいですか?? 私は一次元配列を使用することを考え、すべての二次元配列要素を配置してそこに並べ替え、それを二次元配列に戻して再度印刷しましたが、それでは私のコードは二次元配列の並べ替えに必要なプロセスを解決しません。
public static void sortArray(){
int x = len-1, y = len-1;
int iKey=0,jKey=0;
int cnt=0;
do{
cnt++;
if(y==-1){
x--;
y=len-1;
}
System.out.println(cnt+".)"+x+"-"+y);
int hi = -1;
for(i = 0;i <= x; i++)
for(j = 0;j <= y; j++){
if(twodiArray[i][j]>hi){
hi = twodiArray[i][j];
iKey = i;
jKey = j;
}
}
int temp = twodiArray[iKey][jKey];
twodiArray[iKey][jKey] = twodiArray[x][y];
twodiArray[x][y] = temp;
//dispArray();
y--;
}while(cnt<9);
}