gpt4 book ai didi

java - 我应该如何在 Java 中初始化一个复杂的实例变量?

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:31 26 4
gpt4 key购买 nike

我正在创建一个名为 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
}

最佳答案

一个类应该封装它的实现细节(在本例中是 int[][]),所以我会使用一个带有仅采用数组维度的构造函数的版本。

要修改矩阵,请添加相应的 setter (例如 setValue(int x, int y, int value)。

正如其他人所说,在矩阵类中执行 IO 不是理想的解决方案(参见 Separation of concerns

要根据用户输入初始化 Matrix,您应该使用不同的类。它应该包含用于检索用户输入、解析用户输入和处理错误的逻辑。然后应该使用 Matrix 类的适当修饰符来创建新的 Matrix 实例。

关于java - 我应该如何在 Java 中初始化一个复杂的实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com