【发布时间】:2017-01-26 15:18:44
【问题描述】:
我正在制作一个名为 Matrix 的课程。它的实例变量应该是它的行数、列数和一个表示矩阵的 2D int 数组(在数学中)。它有方法getDeterminant() 得到它的行列式,它应该能够与另一个矩阵相乘。
我的问题是,在构造函数中,我应该如何初始化它?它是否应该接受预制的二维数组,使其构造函数看起来像:
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
}
【问题讨论】:
-
我会更喜欢 first 选项。
-
您可以同时创建两者,具体取决于您的选择。我不会将扫描仪的东西放在
int, int构造函数中。在用例中执行此操作,然后通过管道传输用户输入 -
第一个选项不是很好,但绝对可以。第二个选项很糟糕,永远不应该使用。
-
我明白了。顺便说一句,@AndrewL。这是否意味着我将声明一个私有 int[][] 然后不在构造函数中初始化它,而是在其他地方初始化它?可以吗,不在构造函数中初始化所有实例变量?
-
由于不同的原因,这三个都很糟糕。您的矩阵类可能不应该负责读取用户输入之类的事情。第一个不复制数组的版本会给您带来一些潜在的讨厌的错误 - 例如,想象一下如果您使用相同的数组创建两个矩阵会发生什么。
标签: java arrays class instance-variables