Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印二维字符数组_Java_Printing_Multidimensional Array_Arrays - Fatal编程技术网

Java 打印二维字符数组

Java 打印二维字符数组,java,printing,multidimensional-array,arrays,Java,Printing,Multidimensional Array,Arrays,打印出2d字符数组并不困难,但我需要的方法似乎是 我当前的目标是初始化一个2d字符数组,使每个单元格都包含“-”。这必须在构造函数方法中完成。以下是我到目前为止的情况 public class GameOfLife { public final int MAX_SIZE = 12; // instance variables private char [][] current = new char[MAX_SIZE][MAX_SIZE]; private char [][] next

打印出2d字符数组并不困难,但我需要的方法似乎是

我当前的目标是初始化一个2d字符数组,使每个单元格都包含“-”。这必须在构造函数方法中完成。以下是我到目前为止的情况

public class GameOfLife {

public final int MAX_SIZE = 12;

// instance variables
private char [][] current = new char[MAX_SIZE][MAX_SIZE];
private char [][] next    = new char[MAX_SIZE][MAX_SIZE];
Scanner keyboard = new Scanner(System.in);

  /**
   * Constructor for objects of class GameOfLife.  
   * Initializes the current array to '-'.
   */

    public void GameOfLife() {
        for ( int i = 0; i < MAX_SIZE; i++){
            for ( int j = 0; j < MAX_SIZE; j++){
                current [i][j] = '-';
            }
        }

        @Override public String toString() {
        StringBuilder sb = new StringBuilder();

        for ( int i = 0; i < MAX_SIZE; i++){
            for ( int j = 0; j < MAX_SIZE; j++){
                sb.append(current[i][j]);
                sb.append(" ");
            }
            sb.append("\n"); // add new line
        } 

        return sb.toString(); // convert to String and return
      }
    }`

我遇到的问题是lifeGame无法打印,并且出现了一条奇怪的错误消息-GameOfLife@5d3892b3. 我知道有很多方法可以打印出来,但我无法更改驱动程序类中的任何代码,所以所有编辑都必须在GameOfLife代码中。有什么想法吗?

您可以重写
toString()
方法。您还可以使用
StringBuilder

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();

    for ( int i = 0; i < MAX_SIZE; i++){
        for ( int j = 0; j < MAX_SIZE; j++){
            sb.append(current[i][j]);
            sb.append(" ");
        }
        sb.append("\n"); // add new line
    } 

    return sb.toString(); // convert to String and return
}
注意:构造函数没有返回类型,因此不应使用返回类型
void
声明它:

public GameOfLife() {/* Constructor body */}

GameOfLife类构造函数不应具有void返回类型(java规则)。
而且toString()方法很好实现。

您需要在
GameOfLife
类中重写
toString()
方法。您得到的输出来自继承自
对象的输出。有没有一个简单的原因可以解释为什么必须重写toString()方法?另外,当我尝试实现覆盖时,会出现一个错误,指出必须在toString方法前面放置分号。因为这样,您就可以使用
System.out.print(gameOfLifeInstance)简单地打印
GameOfLife
的实例的表示啊,好的。当尝试实现覆盖时,会出现一个错误,指出toString之后会弹出分号,我不知道为什么。重写是唯一的方法吗?
@Override
不是问题所在。错误可能在其他地方。试着仔细检查你的代码。在放入覆盖代码之前,我没有语法错误。覆盖代码应该在GameOfLife方法中吗?这就是我拥有它的地方。
GameOfLife lifeGame = new GameOfLife();
System.out.print(lifeGame);
public GameOfLife() {/* Constructor body */}