因此,我的代码正确地打印了具有相等尺寸(3x3、2x2)的矩阵,但没有像3x2这样的不相等矩阵。循环出了什么问题?

  public Matrix(int d[][])
{
    numRows = d.length; // d.length is the number of 1D arrays in the 2D array
    if(numRows == 0)
        numColumns = 0;
    else
        numColumns = d[0].length; // d[0] is the first 1D array
    data = new int[numRows][numColumns]; // create a new matrix to hold the data
    // copy the data over
    for(int i=0; i < numRows; i++)
        for(int j=0; j < numColumns; j++)
            data[i][j] = d[i][j];
}

public String toString()
{
String doPrint="";
      Matrix k = this;
      Matrix l = new Matrix(new int[k.numRows][k.numColumns]);
      for (int i = 0; i < l.numColumns; i++) {
        for (int j = 0; j < l.numRows; j++)
            doPrint = doPrint + k.data[i][j]+" ";
      doPrint = doPrint + "\n";
      }
        return doPrint;
     }

最佳答案

您正在混合方法for的嵌套toString()循环中使用的索引。

您正在使用i表示行,而j表示列:

doPrint = doPrint + k.data[i][j] + " ";


但是在循环中,您交换了索引。您应该首先遍历行,然后遍历列:

for (int i = 0; i < l.numRows; i++)
    for (int j = 0; j < l.numColumns; j++)

10-06 00:19