如何使用扫描器处理由无效输入(InputMisameException)引起的无限循环所以,我被这段代码卡住了:import java.util.InputMismatchException;import java.util.Scanner;public class ConsoleReader {
Scanner reader;
public ConsoleReader() {
reader = new Scanner(System.in);
//reader.useDelimiter(System.getProperty("line.separator"));
}
public int readInt(String msg) {
int num = 0;
boolean loop = true;
while (loop) {
try {
System.out.println(msg);
num = reader.nextInt();
loop = false;
} catch (InputMismatchException e) {
System.out.println("Invalid value!");
}
}
return num;
}}这是我的输出:插入整数:无效值!插入整数:无效值!...
4 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
当扫描器抛出InputMisameException时,扫描器将不会传递导致异常的令牌,从而可以通过其他方法检索或跳过该令牌。
int
InputMismatchException
reader.nextInt()
reader.next()
catch
...} catch (InputMismatchException e) { System.out.println("Invalid value!"); reader.next(); // this consumes the invalid token}
精慕HU
TA贡献1845条经验 获得超8个赞
String line = reader.nextLine();Scanner sc = new Scanner(line);
public int readInt(String msg) { int num = 0; boolean loop = true; while (loop) { try { System.out.println(msg); String line = reader.nextLine(); Scanner sc = new Scanner(line); num = sc.nextInt(); loop = false; } catch (InputMismatchException e) { System.out.println("Invalid value!"); } } return num; }
料青山看我应如是
TA贡献1772条经验 获得超8个赞
读取器获得非int字符时退出 EOF时退出
添加回答
举报
0/150
提交
取消