0

シンプルな三目並べゲームを作成しています。私は自分の 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版から、クラスが実行されるとコンストラクターも実行されることを読んだので、印刷機能が実行されると想定しています。

質問:

上記のような tic tac toe ボードをコンソールに出力するにはどうすればよいですか?

編集:助けてくれてありがとう。自動的に実行される代わりに、コンストラクターを呼び出さなければならなかったことがわかりました。上記のコードには解決策が含まれていません。

4

4 に答える 4

2

クラスが実行されると、そのmainメソッドが実行されます。mainメソッドが空なので、何も起こりません。コンストラクターを呼び出す場合は、明示的に呼び出す必要があります。

public static void main (String[] args) {
    new TicTacToe();
}
于 2012-05-09T19:01:25.790 に答える
1

あなたは実際にあなたのメインメソッドに何も持っていません

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]);                        
}
于 2012-05-09T19:03:16.750 に答える
1

内部で何もインスタンス化していないため、何も印刷されていませんmain()main()何かが起こる前に、オブジェクトを内部で使用する必要があります。

于 2012-05-09T19:00:57.070 に答える
1

コードにいくつかの変更を加えました

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]);
    }
}

これがあなたを助けることを願っています。

于 2012-05-09T19:04:53.217 に答える