如何实现在5x5矩阵中查找每一行和每一列的最大元素的方法?

时间:2019-07-31 20:30:25

标签: java matrix

我用随机双精度数创建了一个5x5矩阵。我还需要帮助,以便从每一行和每一列中输出最大的元素(数字)。它将在单独的行上输出,例如“行中最大的元素是:[x,x,x,x,x,x]和列相同。

我试图创建两个单独的方法,但是试图调用它们却不起作用。

public class HomeworkOne {

    private static double[][] RandomArray(int n) {
        double[][] randomMatrix = new double[n][n];
        double[] randomArray = new double[n];
        Random rand = new Random();
        rand.setSeed(System.currentTimeMillis());

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < n; j++) {
                Integer r = rand.nextInt() % 100;
                randomMatrix[i][j] = Math.abs(r);
            }

        }

        return randomMatrix;
    }

    public static void main(String[] args) {

        double[][] matrix = RandomArray(5);
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print(matrix[i][j]);

            }
            System.out.println("");
        }
    }
}

我还不断弄乱矩阵中的数字,因为数字之间没有空格。我该如何格式化它们以在每个数字之间留一个空格?

2 个答案:

答案 0 :(得分:0)

您可以遍历列和行并找到最大值; maxRow和maxCol都保留最大值,两者都从索引零开始(因此您知道最大值来自哪行和列)。

    double[] maxRow = new double[5];
    double[] maxCol = new double[5];
    double[] row = new double[5];
    double[] col = new double[5];
    for(int x = 0; x < 5; x++) {
        for(int y = 0; y < 5; y++) {
            row[y] = matrix[x][y];
            col[y] = matrix[y][x];
        }
        Arrays.sort(row, 0, 4);
        Arrays.sort(col, 0, 4);
        maxRow[x] = row[4];
        maxCol[x] = col[4];
    }
  

我还不断弄乱矩阵中的数字,因为数字之间没有空格。我该如何格式化它们以在每个数字之间留一个空格?

System.out.print(matrix[i][j] + " ");

答案 1 :(得分:0)

import java.util.Random;

public class HomeworkOne{

    private static double[][] RandomArray(int n) {
        double[][] randomMatrix = new double [n][n];
        double[] randomArray = new double [n];
        Random rand = new Random(); 
        rand.setSeed(System.currentTimeMillis()); 

        for (int i = 0; i < n; i++) {   

            for (int j = 0; j < n; j++) {
                Integer r = rand.nextInt()% 100; 
                randomMatrix[i][j] = Math.abs(r);
            }

        }

        return randomMatrix;
    }

    public static void main(String[] args){
        System.out.println("\u000C"); 
        int size = 5;
        double[][] matrix= RandomArray(size);
        for(int i=0; i<5; i++){
            for(int j=0; j<5; j++){
                System.out.printf("%6.1f", matrix[i][j]);
            }
            System.out.println("");
        }

        maxRow(size,matrix);
        maxCol(size,matrix);
    }
    public static void maxRow(int size,double[][] randomMatrix){
        double[] rows = new double[size];

        for(int i = 0; i < size; i++){
            rows[i] = randomMatrix[i][0];
            for(int j = 1; j < size; j++){
                if(randomMatrix[i][j] > rows[i]) rows[i] = randomMatrix[i][j];
            }
        }

        System.out.println();
        System.out.println("Max Rows");
        for(int i = 0; i < size; i++){
            System.out.println(i + "  " + rows[i]);
        } 

    }
     public static void maxCol(int size,double[][] randomMatrix){
        double[] cols = new double[size];

        for(int j = 0; j < size; j++){
            cols[j] = randomMatrix[0][j];
            for(int i = 1; i < size; i++){
                if(randomMatrix[i][j] > cols[j]) cols[j] = randomMatrix[i][j];
            }
        }

        System.out.println();
        System.out.println("Max Cols");
        for(int i = 0; i < size; i++){
            System.out.printf("%6d",i);
        } 
        System.out.println();
        for(int i = 0; i < size; i++){
            System.out.printf("%6.1f",cols[i]);
        } 
    }
}
相关问题