java中的整数方阵

时间:2016-12-16 18:24:27

标签: java

我有整数方阵。我需要在每一行中找到最大元素并使用主对角线元素进行更改。

我的变体:

    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 

我犯错的地方

1 个答案:

答案 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