所以我在将变量列表矩阵分配给变量时遇到了麻烦:
现在我准备了节点方法,一个用于标题,一个用于条目:
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”的内容
任何人都可以暗示我做错了什么吗?所有帮助表示赞赏?
答案 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();
}