-1

以下に示すエラーが表示され続けます。私はそれを適切に宣言していないと思います:

public class SparseMatrix {

// instance variables 
private final TreeMap<Integer,TreeMap<Integer,Double>> matrix;
private final int rows;
private final int cols;

public SparseMatrix(int r, int c) {
              // this gives me an error
    this.rows = new SparseMatrix(r);
    this.cols = new SparseMatrix(c);

} // end of constructor
}
4

3 に答える 3

1

SparseMatrix単一の int 引数を取るコンストラクターがありません。また、this.rowsthis.colsint値であり、SparseMatrixフィールドではありません。また、コンストラクターでfinalフィールドを初期化する必要があります。matrixおそらくこれが必要です:

public class SparseMatrix {

    // instance variables 
    private final TreeMap<Integer,TreeMap<Integer,Double>> matrix;
    private final int rows;
    private final int cols;

    public SparseMatrix(int r, int c) {
        this.rows = r;
        this.cols = c;
        this.matrix = new TreeMap<>();
    } // end of constructor

}
于 2013-11-05T22:45:52.617 に答える
0

this.rowsthis.colタイプ intですが、それらを としてインスタンス化しようとしていますSparseMatrixSparseMatrixa内で aを無条件にインスタンス化することも問題ですSparseMatrix。そのサイクルがいつ終わるか考えてみてください...

于 2013-11-05T22:46:31.450 に答える
0

matrix は final であるため、その宣言またはコンストラクターで宣言する必要があります。final を削除すると、問題なくコンパイルできますが、使用する場合は、ある時点でマトリックスを初期化する必要があります。

また、行と列はintであることを意図していますが、SparseMatricオブジェクトを割り当てています

あなたは次のようなものが欲しいと思います

private TreeMap<Integer,TreeMap<Integer,Double>> matrix;
private final int rows;
private final int cols;

public SparseMatrix(int r, int c) {
  this.rows = r;
  this.cols = c;
} 

そして、マトリックスで行と列を何らかの方法で使用します。より多くの情報があれば、私たちはより多くを助けることができます ;)

于 2013-11-05T22:44:03.157 に答える