将矩阵链表分配给变量时遇到问题(java)

时间:2017-04-03 21:36:07

标签: java matrix

所以我在将变量列表矩阵分配给变量时遇到了麻烦:

现在我准备了节点方法,一个用于标题,一个用于条目:

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;
}

我正在玩,试图弄清楚如何将这些节点放入链表列表,并将该链表分配给单个变量,但我无法弄清楚如何这样做:

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)时,我会得到类似“matrixcomputation.SparseMatrix@2a139a55”的内容

任何人都可以暗示我做错了什么吗?所有帮助表示赞赏?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

默认情况下,java中的每个类都有toString()方法,即   如果你传递一个类的对象,则由System.out.println()调用   它。当您尝试打印类的对象时,System.out.println()   方法将调用返回的类的toString()   该对象的className@hashcode

因此,您应该为想要打印的所有对象实现自己的toString()方法。

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

<强>更新

如果为项目的所有对象实现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();
}