我有这段代码。我想回到循环的起点,并再次要求用户输入。但是,它总是循环而不停止请求输入。我的代码有什么问题?谢谢
while(true){
...
try {
int choice = input.nextInt(); <<---=- this should stop and ask for input, but it always loops without stopping.
} catch (InputMismatchException e){
<< I want to return to the beginning of loop here >>
}
}
从http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29:
“如果翻译成功,则扫描程序将前进经过匹配的输入。”
啊,但是如果翻译是什么 不是
成功的?在这种情况下,扫描仪不会前进超过任何输入。错误的输入数据将保留为下一个要扫描的内容,因此循环的下一次迭代将失败,就像上一个循环一样-
循环将不断尝试读取相同的错误输入。
为了防止无限循环,您必须提前越过不良数据,以便获取扫描程序可以读取为整数的值。下面的代码段通过调用input.next()来实现:
Scanner input = new Scanner(System.in);
while(true){
try {
int choice = input.nextInt();
System.out.println("Input was " + choice);
} catch (InputMismatchException e){
String bad_input = input.next();
System.out.println("Bad input: " + bad_input);
continue;
}
}
问题内容: 一旦在此代码中捕获到异常,该方法就会运行,但是一旦我输入一个数字,程序就会关闭,并显示“生成成功”消息。一旦发生异常,是否有任何方法可以返回while循环? 问题答案: 将 try / catch 放入 while循环中 :
EDIT应该返回true或false,但它的抛出错误
问题内容: 我正在尝试引发异常(不使用try catch块),并且程序在引发异常后立即完成。有没有一种方法可以在我引发异常之后继续执行程序?我抛出了在另一个类中定义的InvalidEmployeeTypeException,但是我希望程序在抛出该异常后继续执行。 问题答案: 试试这个:
显然,当插入指令的应用程序中发生on异常时,插入指令的测试运行将停止: 测试未能运行到完成。原因:“由于“异常”,检测运行失败。”。查看设备日志以了解详细信息 这是自定义仪表运行程序中所需的行为还是错误配置? 我正在使用自定义的[1]来自动化验收测试。 不幸的是,当一个测试中发生on异常时,测试执行被取消。我希望测试套件能够完成,并且只标记失败的测试,就像在JUnit中一样。 如果一个测试中发生异
问题内容: 因此,我的教授为我们分配了一个项目,我们必须从文本文件中接收命令并使用它们来驱动程序的流程。这些命令-起飞,着陆,装载货物,卸载货物等-用于模拟飞机状物体。 有时执行这些命令没有意义,例如在飞机飞行中装载货物。因此,为防止发生此类情况,我们必须在自己的异常类中进行编码,即 “如果命令飞机在飞行中装载货物,则抛出InvalidActionException” 我的问题是:引发异常后,如何
问题内容: 我的示例代码如下: 我的要求是,在捕获到异常之后,我要处理数组的其余元素。我怎样才能做到这一点? 问题答案: 您的代码应如下所示: