Java 尝试在我的类中修复此方法,我认为可能尝试catch,但目标是让用户只能输入1-9
我不断得到一个无限循环,所以我改变了代码,现在我得到一个错误。 我只希望用户能够输入Java 尝试在我的类中修复此方法,我认为可能尝试catch,但目标是让用户只能输入1-9,java,Java,我不断得到一个无限循环,所以我改变了代码,现在我得到一个错误。 我只希望用户能够输入1-9(tic-tac-toe游戏)任何我非常感谢的建议。这是我们班的方法 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 =
1
-9
(tic-tac-toe游戏)任何我非常感谢的建议。这是我们班的方法
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;
}
public int move(){//让他们只能选择1-9
System.out.print(“您想移动到哪里?”);
扫描仪输入=新扫描仪(系统输入);
int move=in.nextInt();
同时(移动>=1 | |移动<10)
{
System.out.println(“移动无效必须为1-9”);
打破
}
回击动作;
}
错误是:
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:3在tictactoe.Board.isValid(Board.java:44)
在tictactoe.tictactoe.main(tictactoe.java:116)
C:\Users\blah\AppData\Local\NetBeans\Cache\8.1\executor- snippets\run.xml:53:Java返回:1
生成失败(总时间:7秒)
在while循环中,您希望使用Scanner类再次提示用户输入move 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();
}
while(移动=10)
{
System.out.println(“移动无效必须为1-9”);
System.out.print(“您想移动到哪里?”);
move=in.nextInt();
}
您的while循环将循环,直到输入的数字无效,请反转循环中的条件。您还需要从用户那里重新获得所需的移动
while(move < 1 || move >= 10 ) {
System.out.println("that move is invalid must be 1-9");
move = in.nextInt();
}
while(移动<1 | |移动>=10){
System.out.println(“移动无效必须为1-9”);
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;
}
public int move(){//让他们只能选择1-9
System.out.print(“您想移动到哪里?”);
扫描仪输入=新扫描仪(系统输入);
int move=in.nextInt();
同时(移动<1 | |移动>9){
System.out.println(“移动无效必须为1-9”);
move=in.nextInt();
}
回击动作;
}
请注意,while循环毫无价值,因为它永远不会循环。如果用户输入不正确,您可能希望从循环中获取用户输入?此外,您不希望创建一组新的扫描仪对象。而是在你的程序中创建一次,并在需要的地方传递它代码>它将无限循环。您的错误不是来自您发布的代码,很可能是错误输入的副作用。您是否阅读了错误消息和堆栈跟踪?这与此代码无关。@SLaks它可能与此代码无关。我假设它返回的move值高于允许值,导致数组越界异常,因为您在数组中使用了它返回的变量。现在我想起来了,您如何确保用户只输入了一个整数,。我不能有任何字母或特殊字符@shmosel@Progamminnoob看见