无法打印双矩阵

时间:2016-11-07 05:42:55

标签: java

我基本上是尝试在main方法中打印这个双数组。 每次我通过main方法传递(行,列)时,它都不起作用。我基本上试图编写一个更大的代码来创建一个双矩阵 用它做了很多东西。这只是一种基本的。我真的很感激我能得到的任何帮助。我试着做Arrays.deepToString();但那也不起作用。请注意,无论何时运行程序,它都不会打印任何内容。谢谢 !

import java.util.Arrays;

public class matrix{
     int row;   
    int column;
    int [][] matrix;

    matrix(int r, int c){
        r = row;
        c = column;
        matrix = new int [r][c];
        int[][] matrix = new int[row][column];
        for(int i = 0; i< matrix.length; i++){      
            for(int j = 0; j < matrix[i].length; j++){          
                matrix[i][j] = (int)(Math.random()*21) - 10;
                System.out.println(matrix[i][j]);
            }
        }                   
    }           
}

2 个答案:

答案 0 :(得分:2)

更改

r = row;
c = column;

this.row = r; // <-- this is optional, but would have prevented your error.
this.column = c;

您正在更改参数(不是您的字段)。提供一些防止修改参数的另一种方法是使它们final - 像

matrix(final int r, final int c)

最后,与您的问题无关,通常的Java命名约定将类matrix设为Matrix。并且,您可以在循环到print后使用Arrays.deepToString(Object[])

System.out.println(Arrays.deepToString(matrix));

全部放在一起

public class Matrix {
    int row;
    int column;
    int[][] matrix;

    Matrix(final int r, final int c) {
        this.row = r;
        this.column = c;
        this.matrix = new int[row][column];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = (int) (Math.random() * 21) - 10;
            }
        }
        System.out.println(Arrays.deepToString(matrix));
    }
}

答案 1 :(得分:2)

我认为您只想在矩阵中的每一行之后打印一个新行:

for (int i=0; i< matrix.length; i++) {
    for (int j=0; j < matrix[i].length; j++) {
        matrix[i][j] = (int)(Math.random()*21) - 10;
        System.out.print(matrix[i][j]);

    }
    System.out.println();  // go to next row
}

正如@Elliott指出的那样,你似乎也在代码中遇到了如何初始化矩阵的问题。完整的构造函数可能是这样的:

public Matrix(int r, int c) {
    this.row = r;
    this.column = c;
    matrix = new int[r][c];

    for (int i=0; i < matrix.length; i++) {
        for (int j=0; j < matrix[i].length; j++) {
            matrix[i][j] = (int)(Math.random()*21) - 10;
            System.out.print(matrix[i][j]);

        }
        System.out.println();  // go to next row
    }
}