尝试在我的类中修复此方法,我认为可能是 try-catch,但目标是让用户只能输入 1-9

  • 本文关键字:try-catch 目标 用户 此方法 java
  • 更新时间 :
  • 英文 :


我一直得到一个无限循环,所以我更改了代码,现在我得到了一个错误。我只希望用户能够输入1 - 9(井字游戏)我真的很感激的任何建议。这是我类的方法

public int move() {  // make it so they can only choose 1-9
    System.out.print("Where do you want to move? ");
    Scanner in = new Scanner(System.in);
    int move = in.nextInt();
    while(move >=1 || move < 10 )
    {
         System.out.println("that move is invalid must be 1-9");
         break;
    }
     return move;
}

错误是:

线程"main"中的异常 java.lang.ArrayIndexOutOfBounds异常:3
在Tictactoe。Board.isValid(Board.java:44)
在Tictactoe。TicTacToe.main(TicTacToe.java:116)
C:\Users\blah\AppData\Local\NetBeans\Cache\8.1\executor- 片段\运行.xml:53:返回的 Java:1
生成失败(总时间:7 秒)

在 while 循环中,您希望使用 Scanner 类再次提示用户移动 int。

while(move <= 0 || move >= 10 )
{
   System.out.println("that move is invalid must be 1-9");
   System.out.print("Where do you want to move? ");
   move = in.nextInt();
}

你的逻辑中有一些错误。让我们试试这个:

public int move() {  // make it so they can only choose 1-9
    System.out.print("Where do you want to move? ");
    Scanner in = new Scanner(System.in);
    int move = in.nextInt();
    while (move < 1 || move > 9) {
         System.out.println("that move is invalid must be 1-9");
         move = in.nextInt();
    }
    return move;
}

您的 while 循环将循环,直到输入的数字无效,反转循环中的条件。您还需要从用户那里重新捕获所需的移动。

while(move < 1 || move >= 10 ) {
         System.out.println("that move is invalid must be 1-9");
         move = in.nextInt();
}

最新更新