【问题标题】:(Java) Printing Tic Tac Toe Board after Initialization(Java) 初始化后打印井字游戏
【发布时间】:2012-05-09 18:59:16
【问题描述】:

我正在创建一个简单的井字游戏。我已经声明了我的 3 x 3 板并将每个游戏区域初始化为 ' ' 或空格字符。

但是,当我尝试打印电路板时,我得到的结果如下所示:

   1   2   3
A    |   |    
   ----------
B    |   |   
   ----------
C    |   |   

什么都没有打印出来。

这是我的 TicTacToe.java:

import java.util.Scanner;

public class TicTacToe{

    public static void main(String[] args) {
           new TicTacToe();
    }
    private char[][] board;
    private char player;

    public TicTacToe() {
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j <3; j++)
         {
           board[i][j] = ' ';
         }
    }
     player = 'X';

    System.out.println(" 1 2 3");
    System.out.println("A" + board[0][0] + "|" + board[0][1] + "|" + board[0][2]);  
    System.out.println("-----");
    System.out.println("B" + board[1][0] + "|" + board[1][1] + "|" + board[1][2]);  
    System.out.println("-----");
    System.out.println("C" + board[2][0] + "|" + board[2][1] + "|" + board[2][2]);                        
    }

我从 Murach 的第 4 版中读到,当类被执行时,构造函数也被执行,所以我假设打印函数将被执行。

问题:

如何将上述井字游戏打印到控制台?

编辑: 感谢您的帮助。结果我不得不调用构造函数而不是自动执行它。上面的代码不包含解决方案。

【问题讨论】:

  • 您似乎有一个空的main 方法,这是怎么回事?
  • 提示:生成一个最小的工作示例而不是发布大量代码:p(这也是自己解决问题的好方法,但在这种情况下不是)
  • @keyser5053 感谢您的建议。我第一次尝试 OOP :)
  • @hyngyn np,这是一个很好的尝试。

标签: java


【解决方案1】:

当一个类被执行时,它的main 方法被执行。你的 main 方法是空的,所以什么也没有发生。如果你想调用构造函数,你必须显式地这样做。

public static void main (String[] args) {
    new TicTacToe();
}

【讨论】:

  • 我收到一个错误Exception in thread "main" java.lang.NullPointerException 指向我设置board[i][j] = ' ';的位置
  • @hyngyn 你从不初始化你的数组。
  • @hyngyn 初始化“板”,设置它的大小
【解决方案2】:

我对代码做了一些改动

public class TicTacToe {

    public static void main(String[] args) {
        new TicTacToe();
    }

    private char[][] board = new char[3][3];
    private char player;

    public TicTacToe() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                board[i][j] = ' ';
            }
        }
        player = 'X';

        System.out.println(" 1 2 3");
        System.out.println("A" + board[0][0] + "|" + board[0][1] + "|"
                + board[0][2]);
        System.out.println("-----");
        System.out.println("B" + board[1][0] + "|" + board[1][1] + "|"
                + board[1][2]);
        System.out.println("-----");
        System.out.println("C" + board[2][0] + "|" + board[2][1] + "|"
                + board[2][2]);
    }
}

希望这会对你有所帮助。

【讨论】:

    【解决方案3】:

    没有打印任何内容,因为您没有在 main() 中实例化任何内容。在发生任何事情之前,您必须在 main() 中使用您的对象。

    【讨论】:

      【解决方案4】:

      您的 main 方法中实际上没有任何内容

      import java.util.Scanner;
      
      public class TicTacToe{
      
      public static void main(String[] args) {
          // insert code to set up your tictactoe object  here
          TicTacToe ttt = new TicTacToe();
      }
      private char[][] board;
      private char player; // 'X' or 'O'
      
      public TicTacToe() {
      for(int i = 0; i < 3; i++)
      {
          for(int j = 0; j <3; j++)
           {
             board[i][j] = ' ';
           }
      }
       player = 'X';
      
      System.out.println(" 1 2 3");
      System.out.println("A" + board[0][0] + "|" + board[0][1] + "|" + board[0][2]);  
      System.out.println("-----");
      System.out.println("B" + board[1][0] + "|" + board[1][1] + "|" + board[1][2]);  
      System.out.println("-----");
      System.out.println("C" + board[2][0] + "|" + board[2][1] + "|" + board[2][2]);                        
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多