Java Tic-Tac-Toe游戏抛出异常

Java Tic-Tac-Toe游戏抛出异常,java,Java,我是编程新手,已经成功地制作了一个可以正常工作的井字游戏,但是我需要抛出一个异常,这样我就不能把一块放在另一块上面了。这是我所拥有的 /** Choose a cell for player has won. @param r the row number chose @param c the column number chose @param player the player who choose a position

我是编程新手,已经成功地制作了一个可以正常工作的井字游戏,但是我需要抛出一个异常,这样我就不能把一块放在另一块上面了。这是我所拥有的

      /**
      Choose a cell for player has won.
      @param r the row number chose
      @param c the column number chose
      @param player the player who choose a position          
      @throws UnavailableCellException is the cell has been occupied (by either player)   
      */

   public void choose(int r, int c, int player){

       this.board[r][c] = player;
       try {
           for(int i = 0; i < board.length; i ++) {
               if (player == i && player == i + 1) {
               throw new UnavailableCellException("That spot is taken!!");
               }
           }
        } catch(UnavailableCellException e) {
           System.out.println("That spot is taken!!");
        }
    }
我不知道如何达到当前和上一轮,使他们不平等

您可以使用一个简单的if语句来检查单元格是否被使用。根据结果设置单元格值或抛出UnavailableCellException


如果UnavailableCellException从RuntimeException扩展而来,您不需要在方法声明中使用Trows UnavailableCellException部分。

您能不能检查一下这个.board[r][c]是否有一个值表明它已经播放过?我假设电路板是一个int[][],所以只要检查一下这个。电路板[r][c]!=0{throw…}您需要检查的应该是board[r][c]是否已经分配了玩家编号。这里不需要循环。如前所述,不需要循环。在执行此操作之前,只需检查此.board[r][c]的值。board[r][c]=player。换句话说,在为其赋值之前,请确保其为空。如果它不是空的,您可以抛出异常。
public void choose(int r, int c, int player) throws UnavailableCellException
{
    if (this.board[r][c] == 0) { // assuming "0" means "free cell"
        // valid, place it
        this.board[r][c] = player;
    } else {
        // already used, throw exception
        throw new UnavailableCellException("That spot is taken!!");
    }
}