Java 如何为二维数组创建toString方法

Java 如何为二维数组创建toString方法,java,matrix,Java,Matrix,我正在写一个矩阵计算程序,它必须包含一个toString方法来显示矩阵。到目前为止,我已经做到了这一点,但我不确定我是否做对了。使用Java 8,您可以非常优雅地完成: public String toString() { return Stream.of(info).map(Arrays::toString).collect(Collectors.joining("\n")); } 对于矩阵的简单toString方法(不使用流)可以是: p

我正在写一个矩阵计算程序,它必须包含一个toString方法来显示矩阵。到目前为止,我已经做到了这一点,但我不确定我是否做对了。

使用Java 8,您可以非常优雅地完成:

    public String toString() {
        return Stream.of(info).map(Arrays::toString).collect(Collectors.joining("\n"));
    }
对于
矩阵
的简单
toString
方法(不使用流)可以是:

public String toString() {
    StringBuilder str = new StringBuilder(); 
    for (int i = 0; i < info.length; i++){
       for (int j = 0; j < info[i].length; j++)
           str.append(info[i][j]).append(" ");
       str.append("\n");
    }
    return str.toString();
}
构造函数将从类外部调用:

//calling the constructor ?
Matrix second = new Matrix(new double[][]{{2, 8},{-4, 6},{0, -2}});
例如:

class Main {  
  public static void main(String args[]) { 
     Matrix second = new Matrix(new double[][]{{2, 8},{-4, 6},{0, -2}}); 
  } 
}
最后,不需要变量来存储矩阵大小

 this.a = r;
 this.b = c;

这些信息可以用Java从矩阵本身检索。

如果您将其放入main方法中,它就可以正常工作:

public static void main(String[] arg){
        //calling the constructor ?
        Matrix second = new Matrix(new double[][]{{2, 8}, {-4, 6}, {0, -2}});
        for(double[] i: second.info){
            for(double j: i){
                System.out.println(j);
            }
        }
    }
请记住,在第二个构造函数中,您应该这样写:

public Matrix(double[][] info) {

        this.info = info;
}

因为参数是info,而不是矩阵的大小。

您在
中弄错了(int j=0;j
public Matrix(double[][] info) {

        this.info = info;
}