我不知道为什么我的类方法不会接受矩阵作为输入,尽管它是int[][]
。
这是我的主要内容:
public class Lab1 {
public static void main(String[] args) {
Matrix One = new Matrix(3, 3);
Matrix.viewMatrix(One);
}
}
/**
* Here's my class called "Matrix":
**/
public class Matrix {
private int rows;
private int columns;
Matrix() {}
Matrix(int rows, int columns) {
this.rows = rows;
this.columns = columns;
int[][] matrix = new int[rows][columns];
} // matrix constructor
public void viewMatrix(int[][] a) {
} // viewMatrix
} // class
答案 0 :(得分:2)
viewMatrix(int[][] a)
签名不允许Matrix.viewMatrix(One)
来电,因为Matrix
不是int[][]
。
我建议您将签名更改为viewMatrix()
并在其中打印matrix
实例字段(如Arrays.deepToString(matrix)
)。问题是matrix
不是您案例中的实例字段。这样做:
private int[][] matrix;
Matrix (int rows, int columns) { matrix = new int[rows][columns]; }
此外,您无需将rows
和columns
作为字段。您将通过matrix.length
和matrix[0]==null ? 0 : matrix[0].length
来电获取。
int[]
和Matrix
是引用类型。 Matrix
类是否包含int
数组并不重要,它不是int[]
无论如何都是{。}}。
此处还有另一个问题 - 第Matrix.viewMatrix(...);
行。该方法不是静态的,因此您无法通过类名调用它。但您可以像One.viewMatrix(...)
一样自由地执行此操作(通过JCC,最好将变量命名为one
或firstMatrix
)。
答案 1 :(得分:2)
viewMatrix()不是静态的,因此应使用对象调用它,在您的情况下,One
和int[][]
与Matrix
不同。
我假设您要对One
的矩阵数组执行某些操作,然后您只需调用One.viewMatrix()
并访问其matrix
变量this.matrix
viewMatrix()
public class Lab1 {
public static void main(String[] args) {
Matrix One = new Matrix(3, 3);
// One is a instance of Matrix class
// So it should be
One.viewMatrix();
}
}
/**
Here's my class called "Matrix":
**/
public class Matrix {
private int rows;
private int columns;
private int[][] matrix; <= you need this
Matrix() {
}
Matrix (int rows, int columns) {
this.rows = rows;
this.columns = columns;
this.matrix = new int[rows][columns];
} // matrix constructor
public void viewMatrix() {
// viewMatrix can access array using this.matrix
} // viewMatrix
} // class
答案 2 :(得分:0)
当你这样做时
is-opened
您正在创建Matrix类型的新对象。因此,当您拨打下一个电话时,
Matrix One = new Matrix(3, 3);
你传递的是一个Matrix对象,它不是一个int [] []数组,就像它期待的那样。
我认为您的混淆可能是您在Matrix构造函数中创建了一个int [] []。
答案 3 :(得分:-1)
viewMatrix方法在int类型上接受2维数组,并且您正在尝试发送Matrix对象,这两个不兼容。您可以做的是
public class Matrix {
private int rows;
private int columns;
private int[][] matrix;
Matrix() { }
Matrix (int rows, int columns) {
this.rows = rows;
this.columns = columns;
matrix = new int[rows][columns];
} // matrix constructor
public void viewMatrix(int[][] a) {
} // viewMatrix
} // class
public class Lab1 {
public static void main(String[] args) {
Matrix One = new Matrix(3, 3);
One.viewMatrix(One.getMartix());
}
}