在对象上调用 toString

Calling toString on objects

我有一个 class Game 有一个 toString 方法。

我想使用嵌套的 for 循环遍历数组,然后针对该数组指定索引中的每个 Tile 元素,打印出基于该 Tile 的特定字符串我在 Tile class.

中编写的 toString 方法中的 s 属性

如果这是合适的逻辑,我该如何实现?我无法在两个 toString 方法之间正确匹配参数。

public String toString(tileArr){
    for(int i = 0; i < rows; i++){      
        for(int j = 0; j < columns; j++){ 
            tileArr[i][j].toString(t);
        }   
        System.out.print("\n");
    }
    return "";
}

您混淆了两个概念:在内存中创建字符串和打印。

您的 toString() 方法不应调用 System.out.println()。相反,它应该只是创建一个字符串,可以由一些调用者打印。

此外,如果您尝试提供传统的 toString() 方法,则它不需要任何参数。由于它是一个实例方法,它可以访问对象的字段。

public class Game {
  private int rows, columns;
  private int tileArr[][];

  ...

  public String toString(){
      StringBuilder builder = new StringBuilder();
      for(int i = 0; i < rows; i++){      
         for(int j = 0; j < columns; j++){ 
            builder.append( tileArr[i][j].toString() );
            builder.append(" "); // If tiles need to be separated.
         }   
         builder.append("\n");
      }
      return builder.toString();
   }
}