我基本上是尝试在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]);
}
}
}
}
答案 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
}
}