我真的不知道如何解释这一点,但我们开始吧。
我正在测试一些我必须制作的更大程序的东西。在程序中,我必须验证用户的输入,看看它是否被接受为有效答案。
我有代码,它会显示输入是否无效,但如果我尝试输入另一个字母,代码就会崩溃并出现以下错误:
Enter a letter:
f
Your answer is not valid.
A
Enter a letter:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:695)
at example.main(example.java:18)
这是代码:
import java.util.Scanner;
public class example
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
boolean UserInput;
do
{
char user_answer = 0;
System.out.println("Enter a letter:");
user_answer=input.nextLine().charAt(0);
if ( user_answer == 'A')
{
UserInput = true;
}
else if (user_answer == 'B')
{
UserInput = true;
}
else if (user_answer == 'C')
{
UserInput = true;
}
else if (user_answer == 'D')
{
UserInput = true;
}
else
{
System.out.println("Your answer is not valid.");
UserInput = false;
input.next();
}
}
while (!UserInput);
}
}
最佳答案
删除input.next()
或将其更改为input.nextLine()
发生的情况是 input.next()
将捕获您输入的 A
。然后,您返回到 do
的开头并重新开始,执行 input.nextLine()
,但您已经按 enter
输入 A
,并且 A
被 input.next()
消耗。
关于java - 如何让do语句重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35076390/