我正在创建一个名为Matrix的课程。它的实例变量应该是它的行数,列数,以及表示矩阵的2D int数组(在数学中)。它有方法getDeterminant()
得到它的决定因素,它应该能够与另一个矩阵相乘。
我的问题是,在构造函数中,我应该如何初始化它?它是否应该接受预制的2D数组,以使其构造函数如下:
public class Matrix {
private int[][] matrix;
public Matrix(int[][] matrix) {
this.matrix = matrix;
//etc.
}
}
或者应该在构造函数中创建它,使其看起来像
public class Matrix {
private int[][] matrix;
public Matrix(int rows, int columns) {
Scanner in = new Scanner(System.in);
//asks the user to input a matrix
}
//methods and the such
}
编辑: 或者,我应该有一个初始化它的方法,如
public class Matrix {
private int[][] matrix;
public Matrix() {
//something else
}
public int[][] initializeMatrix(int rows, int columns) {
//for loop + Scanner nextInt() to ask the user to input matrix
}
//methods and the such
}
答案 0 :(得分:0)
一个类应该封装它的实现细节(在本例中是int [] []),所以我会使用一个只带有数组维度的构造函数的版本。
要修改矩阵,请添加相应的setter(例如setValue(int x,int y,int value)。
正如其他人所说,在矩阵类中进行IO不是一个理想的解决方案(参见Separation of concerns
要从用户输入初始化Matrix,您应该使用其他类。 它应包含用于检索用户输入,解析用户输入和处理错误的逻辑。 然后应该使用Matrix类的适当修饰符来创建新的Matrix实例。
答案 1 :(得分:-1)
根据我对您的问题的理解,请在下面查看有关构造函数的一些详细信息,
因此,这取决于您构建正确构造函数的要求
喜欢让我们说
如果要在初始化时将值设置为类,则需要使用参数化构造函数并为其中的矩阵传递值。
假设您希望让用户在类初始化时传递值,那么您需要在构造函数中请求值,因此您需要对其进行结构化。
所以它总是取决于我们对如何构造构造函数的要求