我需要检查一个2d数组是否已满并且是否为拉丁方。我有两种方法可以检查这两种情况但是当我将检查放入do while循环时它不会检查。如果棋盘已满,我希望游戏停止然后继续检查它是否是拉丁方。我将它设置为检查数组中空元素的位置。这是全面检查的代码。
public static boolean fullBoard(char [][] square){
for(int i = 0; i < square.length; i++){
for(int j = 0; j < square.length; j++){
if(square[i][j] == 0) {
return false;
}
}
}
return true;
}
这是do while的代码:
do {
promptUser(square);
printBoard(square);
if(fullBoard(square)) {
isLatinSquare(square);
}
}while(isLatinSquare(square));
System.out.println("you win");
printBoard(square);
}
好的,我不确定能理解一切,但我会尽力帮助。
当我看着你做的时候,我可以看到
if(fullBoard(square)) {
isLatinSquare(square);
没用。方法isLatinSquare返回一个bool。你甚至不使用它的返回值。
如果你希望游戏结束直到游戏结束并且恐慌是拉丁:
do {
promptUser(square);
printBoard(square);
}
while(isLatinSquare(square) && fullBoard(square));
System.out.println("you win");
printBoard(square);
}
如果你想在游戏满员时暂时停止游戏:
do {
promptUser(square);
printBoard(square);
if(fullBoard(square)) {
Thread.sleep(2000); //2 sec pause
}
}
while(isLatinSquare(square));
System.out.println("you win");
printBoard(square);
你可以这样试试吗
do {
promptUser(square);
printBoard(square);
}while(!fullBoard(square));
if(isLatinSquare(square)) {
System.out.println("you win");
}
else {
System.out.println("you lose");
}
printBoard(square);