【问题标题】:Java unreachable statement Tic Tac ToeJava 不可达语句井字游戏
【发布时间】:2015-09-21 10:50:57
【问题描述】:
import java.util.Scanner;

public class TTT{
public static int row, col;
public static Scanner scan = new Scanner(System.in);
public static char[][] board = new char[3][3];
public static char turn = 'X';

public static void main(String args[]){

 for(int i = 0; i < 3; i++){
   for(int j = 0; j < 3; j++){
     board[i][j] = '_';
   }
 }

 Play();


}
public static void Play(){
 boolean playing = true;
 printBoard();
 while(playing){
   System.out.println("Enter a row(1,2,3): ");
   row = scan.nextInt() - 1;
   System.out.println("Enter a column(1,2,3): ");
   col = scan.nextInt() - 1;
   board[row][col] = turn;
   if (GameOver(row, col)){
     playing = false;
     System.out.println("Game Over! Player " + turn + " wins!");  

   }
   if (turn == 'X')
     turn = 'O';
   else
     turn = 'X';


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

   }
 }
 System.out.println();

}
public static boolean GameOver(int xToken,int oToken){
 // Check perpendicular victory
 if (board[0][oToken] == board[1][oToken]
     && board[0][oToken] == board[2][oToken])
    return true;
 if (board[xToken][0] == board[xToken][1]
     && board[xToken][0] == board[xToken][2])
    return true;
 // Check diagonal victory
 if (board[0][0] == board[1][1] && board[0][0] == board[2][2]
     && board[1][1] != '_')
    return true;  
 if (board[0][2] == board[1][1] && board[0][2] == board [2][0]
     && board[1][1] != '_');
    return true;
 return false;

}
}

我正在尝试完成我的井字游戏,但是我在最终返回 false 时收到了无法访问的声明;陈述。我也无法让我的程序通过我的整个 for 循环。请帮忙!

【问题讨论】:

  • return true; return false; so return false unreachable.you have a semicolon in if condition
  • @FastSnail 不。这不是原因。
  • @sᴜʀᴇsʜᴀᴛᴛᴀ 你是什么意思?你的答案也是这样的
  • @FastSnail 是的。现在是:)

标签: java


【解决方案1】:

看看你的if条件

if (board[0][2] == board[1][1] && board[0][2] == board [2][0]
     && board[1][1] != '_');<--

您以 ; 结束您的陈述因此最后的 2 个回报成为结果。

如果你删除它;那你就没事了。

这就是我喜欢{} 的原因。一个好的编码习惯是始终将{} 用于 if else's。

【讨论】:

    【解决方案2】:

    你在GameOver这里有一个空语句,

    if (board[0][2] == board[1][1] && board[0][2] == board [2][0]
            && board[1][1] != '_');
        return true;
    

    删除创建该条件的分号;喜欢

    if (board[0][2] == board[1][1] && board[0][2] == board [2][0]
            && board[1][1] != '_')
        return true;
    

    另外,我建议您使用括号。并且您使用 IDE(或其他)压头。

    【讨论】:

    • 我现在已经修复了无法访问的语句问题,但是没有这个我现在遇到的问题是我的板在每次循环后将不再打印
    • System.out.println(Arrays.toString(board)); 也许你应该试试调试器。
    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多