Java 通过连接四个网格进行循环

Java 通过连接四个网格进行循环,java,Java,我正在做一个连接四个项目,但我正在努力与胜利检查。我认为这与我如何在网格上循环有关。它在水平方向工作,但不是垂直方向,它在对角线方向工作 public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) { int rowPosition = 0; for (int i = 0; i < gameBoard.getWidth(); i++) for (

我正在做一个连接四个项目,但我正在努力与胜利检查。我认为这与我如何在网格上循环有关。它在水平方向工作,但不是垂直方向,它在对角线方向工作

public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) {
    int rowPosition = 0;

    for (int i = 0; i < gameBoard.getWidth(); i++)
        for (int j = 0; j < gameBoard.getHeight(); j++)
            if (gameBoard.get(i, columnPosition) != CellState.FREE)
                rowPosition = i;

    if (checkColumn(gameBoard, columnPosition, gameToken, rowPosition))
        return true;
}


public boolean checkColumn(MyBoard gameBoard, int columnPosition, CellState gameToken, int rowPosition) {
    int tokenCounter = 1;

    if ((rowPosition + 4) <= 6)
        for (int i = rowPosition + 1; i <= rowPosition + 3; i++)
            if (gameToken == gameBoard.get(i, columnPosition))
                tokenCounter++;
            else
                break;

    if (tokenCounter == 4)
        return true;

    return false;
}
public boolean gameStatus(MyBoard gameBoard、int columnPosition、CellState gameToken){
int rowPosition=0;
对于(int i=0;i如果((rowPosition+4)我认为这只检查最后一行,它是非空的

Java不关心缩进,因此在没有大括号的情况下,
if
for
只在它们后面使用语句。这意味着
if(checkColumn…
只运行一次,而不是对每一列运行一次

你可能想试试类似的东西

public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) { 
    int rowPosition = 0;
    for (int i = 0; i < gameBoard.getWidth(); i++) {
        for (int j = 0; j < gameBoard.getHeight(); j++) {
            if (gameBoard.get(i, columnPosition) != CellState.FREE) {
                rowPosition = i;
            }
        }
        if (checkColumn(gameBoard, columnPosition, gameToken, rowPosition)) {
            return true;
        }
    }
public boolean gameStatus(MyBoard gamesboard,int columnPosition,CellState gamestoken){
int rowPosition=0;
对于(int i=0;i

一般来说。我建议不要在没有大括号的情况下编写
if
for
while
语句。它保存的两个字符不值得您意外引入的错误。我认为这只检查最后一行,它不是空的

Java不关心缩进,因此在没有大括号的情况下,
if
for
只在它们后面使用语句。这意味着
if(checkColumn…
只运行一次,而不是对每一列运行一次

你可能想试试类似的东西

public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) { 
    int rowPosition = 0;
    for (int i = 0; i < gameBoard.getWidth(); i++) {
        for (int j = 0; j < gameBoard.getHeight(); j++) {
            if (gameBoard.get(i, columnPosition) != CellState.FREE) {
                rowPosition = i;
            }
        }
        if (checkColumn(gameBoard, columnPosition, gameToken, rowPosition)) {
            return true;
        }
    }
public boolean gameStatus(MyBoard gamesboard,int columnPosition,CellState gamestoken){
int rowPosition=0;
对于(int i=0;i

一般来说。我建议不要写不带大括号的
if
for
while
语句。它保存的两个字符不值得你意外引入的bug

是你的
if(检查列(…)
语句应该作为
for
循环的一部分执行吗?您的缩进表明这可能是您的意图,但目前看来不会。您的
if(checkColumn(…)
语句应该作为
for
循环的一部分执行吗?您的缩进表明这可能是您的意图,但目前它不会。谢谢您,现在它可以水平运行。您是对的,考虑到我花了几个小时处理这个问题,这不值得,错误只是一个简单的括号错误。谢谢您,现在我知道了你是对的,考虑到我花了几个小时处理这个问题,这个错误只是一个简单的括号错误,所以不值得这么做。