苦労

2017-04-03 23 views
1

だから私はトラブル変数にLinkedListの行列を割り当てることだ。今、私は、ノードのメソッドが用意している苦労

を、ヘッダーの1、および1のためにエントリ:

public Node(double value, int row, int col) 
{ 
    this.value = value; 
    this.row = row; 
    this.col = col; 
} 
public Node(Node rowLink, Node colLink, double value, int row, int col) 
{ 
    this(value, row, col); 
    this.rowLink = rowLink; 
    this.colLink = colLink; 
} 

そして、私はLinkedListのマトリックスにこれらのノードを配置する方法を把握しようと、遊んで、そして単一の変数へのLinkedListのを割り当てるが、私はどのように考え出すのトラブルを抱えていますよそう:

public SparseMatrix(Node[] r, Node[] c) { 
    rowHeads = r; 
    colHeads = c; 

    Node rowHeads = r[0]; 
    Node colHeads = c[0]; 
    Node one = new Node(r[0],c[0],2,2,2); 
} 
//parameter n --> given matrix size n 
public static SparseMatrix[] initializeByFormula(int n) { 

Node[] c = new Node[n]; 
Node[] r = new Node[n]; 

    for(int i=0;i<n;i++){ 
    r[i]=new Node(0,i+1,0); 
    c[i]=new Node(0,0,i+1); 
} 
    SparseMatrix[] B = new SparseMatrix[5]; 
    SparseMatrix ch = new SparseMatrix(r,c); 
    B[0] = ch; 
    //System.out.println(B[0]); 
    SparseMatrix[] result = null; 
    return result; 
} 

私は行列(この例では、CH)をプリントアウトしようとするたびに、私は「[email protected]」のような何かを得る

誰もが私が間違ってやっている方に私をヒントことができますか?すべての助けに感謝しますか? Javaで

+3

SparseMatrix'クラス 'で'のtoString() 'メソッドを実装します。 – Justas

+0

'SparseMatrix'オブジェクトを印刷するといくつかの' Node'オブジェクトを印刷するので、 'SparseMatrix'と' Node'の両方に 'toString()'を実装したいと思うでしょう。 –

答えて

0

すべてのクラスは、あなたがそれを するクラスのいくつかのオブジェクトを渡す場合 はSystem.out.println()によって呼び出され、デフォルトでその中にtoString()方法があります。クラスのオブジェクトを印刷しようとすると、System.out.println() メソッドは、そのオブジェクトの [email protected]を返すクラスのtoString()を呼び出します。

したがって、素敵な印刷をしたいすべてのオブジェクトに対して、独自のtoString()メソッドを実装する必要があります。

@Override 
public String toString() { 
    return "Node (value: " + this.value + " row: " + this.col + " row: " + this.col + ")"; 
} 

UPDATE

あなたが実装している場合、あなたのすべてのオブジェクトのtoString()あなたはコンテナクラスは、すべてのオブジェクトが含まれているプリントアウトする動作を持つことができますプロジェクト。

より具体的には、SparseMatrixオブジェクトはtoString()メソッドを実装し、含まれているすべてのオブジェクトtoString()メソッドを繰り返し呼び出すことができます。

この場合、一般的なベストプラクティスはStringBuilderオブジェクトの使用です。

@Override 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append("SparseMatrix(\n"); 
    for (Node n: this.nodes) { 
     sb.append(n); 
     sb.append("\n"); // or another delimiter you like 
    } 
    sb.append(")");  
    return sb.toString(); 
} 
+0

ありがとうございました!私は実際に私たちに与えられたノードクラスで非常に似たものを与えられました。しかし、これは単一のノードを印刷するだけではありませんか?すべてのノードを列と行でリンクした後で、これを使って行列全体を印刷するにはどうすればよいでしょうか? –

+0

こんにちは@jameslin私はSparseMatrixで何をすべきかを説明する提案を追加して答えを更新しました – freedev

+0

それに感謝します。与えられたtoStringメソッドを持つノードクラスが与えられ、このクラスに触れないように言われたので、何らかの理由でtoStringメソッドが、新しく作成されたオーバーライドメソッドではなく、常にそのクラスを呼び出します。なぜこのようなことが起こっているのかご存じですか? –

1
@Override 
    public String toString() { 
     return "whatever you want to print when you place b[0] in System.out.println()"; 
    }