私はMatrixというクラスを作っています。そのインスタンス変数は、行数、列数、および行列を表す2D int配列(数学で)でなければなりません。それはその決定子を得るメソッドgetDeterminant()
を持ち、それは別の行列で乗算することができるはずです。複雑なインスタンス変数をJavaでどのように初期化すればよいですか?
私の質問は、コンストラクタで、どのように私はそれを初期化する必要がありますか?
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
}
EDITのようにそれが見えるように、それはコンストラクタ内でそれを作成する必要があります: それとも、私が持っている必要があり、そのコンストラクタがどのように見えるように、それは、既成の2次元配列を受け入れなければなりませんクラス(この場合のint [] [])、その実装の詳細をカプセル化しなければならないので、私はそのコンストラクタでバージョンを使用する
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、int'コンストラクタの中にスキャナのものを入れません。 Usecaseでそれを行い、次にユーザー入力をパイプします。 – Li357
最初のオプションはあまり良くありませんが、間違いなくOKです。 2番目のオプションはひどいので、決して使用しないでください。 –