如何为2d数组创建tostring方法

ff29svar  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(276)

我正在写一个矩阵计算程序,它必须包括一个tostring方法来显示矩阵。这是我目前所拥有的,但我不确定我是否做得对。

xqnpmsa8

xqnpmsa81#

如果你把它放到一个主方法中,它就可以正常工作了:

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

请记住,在第二个costructor中,您应该这样写:

public Matrix(double[][] info) {

        this.info = info;
}

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

fivyi3re

fivyi3re2#

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

public String toString() {
        return Stream.of(info).map(Arrays::toString).collect(Collectors.joining("\n"));
    }

一个简单的 toString 方法(不使用流) matrix 可以是这样的:

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

你的代码有几个错误。
在构造函数中,缺少两个参数(即r和c)。然而,你并不真的需要它们;您只需使用 matrix 作为参数传递以计算 info 矩阵大小。

// Constructor 
public Matrix(double[][] info) {
    this.info = new double[info.length][info[0].length];
    for (int i = 0; i < info.length; i++) {
        for (int j = 0; j < info[0].length; j++) {
            this.info[i][j] = info[i][j];
        }
    }
}

构造函数是从类外部调用的:

//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从矩阵本身检索。

相关问题