x和o游戏java for循环

问题描述 投票:-3回答:1

我正在制作一个tic tac toe游戏。我有一个类来实现这里的几个方法是代码:

package test;

public class test {

    private String[][] board = new String[3][3];

    public test() {

    }

    public void move(int x, int y) {
        String turn = "X";
        if (turn.equals("X")) {
            turn = "O";
        }else {
            turn = "X";
        }

        board[x][y] = turn;
    }

    public void display() {
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                System.out.print(board[i][j] + " ");
            }
            System.out.println();
        }
    }

}   

我的问题是代码总是在下面的数组位置放置“O”是用于运行类的测试代码:

package test;

public class RunTest {

    public static void main(String[] args) {
        test game = new test();

        game.move(1, 2);
        game.move(1, 1);
        game.move(0, 0);
        game.display();

    }

}

这是显示的内容

O null null 
null O O 
null null null 

如何从"X"开始替换代码然后切换到"O"

java for-loop tic-tac-toe
1个回答
3
投票
public class test
{
    private String[][] board = new String[3][3];
    private String turn = "X";

    public test() {

    }

    public void move(int x, int y) {   
        board[x][y] = turn;

        if (turn.equals("X")) {
            turn = "O";
        }else {
            turn = "X";
        }
    }

    public void display() {
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                System.out.print(board[i][j] + " ");
            }
            System.out.println();
        }
    }
}

你的问题是你使用了局部变量turn而不是类成员。每次调用该方法时,turn都被设置为X,并且平等总是true。另外,我建议你在用新动作更新电路板后更改你的turn成员值,这更有意义。

关于显示问题的问题......你在没有指定初始值的情况下声明你的board变量(我想说的是包含-的字符串,为了便于阅读)。这就是为什么你在打印时看到那些null。所以你在这里有两个选择......第一个是分配默认值:

String[][] board = new String [][]
{
    { "-", "-", "-" },
    { "-", "-", "-" },
    { "-", "-", "-" }
};

第二个是对你的display方法进行额外的检查:

public void display() 
{
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            String tile = board[i][j];

            if (tile == null)
                System.out.print("- ");
            else
                System.out.print(tile + " ");
        }

        System.out.println();
    }
}

无论您选择什么,在您的示例中都会打印出来:

X - -
- O X 
- - -
© www.soinside.com 2019 - 2024. All rights reserved.