我有整数方阵。我需要在每一行中找到最大元素并使用主对角线元素进行更改。
我的变体:
public class matrix {
public static void main(String[] args) {
int[][] arr={{4,3,5},
{6,7,1},
{9,8,2}};
int max;
int temp;
for(int i=0; i<arr.length; i++){
max=0;
for(int j=0; j<arr.length; j++){
if(max<arr[i][j]){
max=arr[i][j];
for(int k=0; k<arr.length; k++){
if(i==k){
temp=arr[i][k];
arr[i][k]=arr[i][j];
arr[i][j]=temp;
}
}
}
}
}
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr.length; j++){
System.out.print(arr[i][j]+" ");
}
System.out.println("");
}
}
}
最后我必须有array:
5 3 4
6 7 1
2 8 9
但它在第二行出错并显示如下:
5 3 4
7 6 1
2 8 9
我犯错的地方
答案 0 :(得分:0)
看起来你的问题出在你的循环中
for(int i=0; i<arr.length; i++){
max=0;
for(int j=0; j<arr.length; j++){
if(max<arr[i][j]){
max=arr[i][j];
for(int k=0; k<arr.length; k++){
if(i==k){
temp=arr[i][k];
arr[i][k]=arr[i][j];
arr[i][j]=temp;
}
}
}
}
}
在这里,您可以看到找到了max
,然后进入swap
循环。
然后您应首先找到max
的{{1}},然后尝试交换它们。所以就这样了。
row