打印2d字符数组

时间:2014-03-03 04:00:59

标签: java printing multidimensional-array arrays

打印出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
      }
    }`

如果只是用这种方法打印,我知道如何正确打印它;但是,我必须以下列方式使用“GameOfLife”构造函数。下一个代码在驱动程序类中,称为“gameoflifedriver”。

   // Create a GameOfLife object
    GameOfLife lifeGame = new GameOfLife();
    System.out.print(lifeGame);

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

2 个答案:

答案 0 :(得分:2)

您可以覆盖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
}

然后您可以使用以下方式打印此表示:

GameOfLife lifeGame = new GameOfLife();
System.out.print(lifeGame);

注意:构造函数没有返回类型,因此您不应该使用返回类型void声明它:

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

答案 1 :(得分:0)

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