如何在输入非数字值时阻止程序崩溃?我知道kbd.hasNextLong,但我不确定如何实现它。验证Java中的扫描仪输入
-1
A
回答
1
这是你可以验证它:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean end = false;
long value;
while (end == false) {
try {
value = input.nextLong();
end = true;
} catch (InputMismatchException e) {
System.out.println("Please input the right LONG value!");
input.nextLine();
}
}
}
注意input.nextLine()
在追赶声明。如果你输入一些非int文本,它会跳转到catch(导致Integer不能在nextInt中读取),它将打印出消息,然后再次发送。但键入的值不会消失,即使您不做任何事情,它也会再次崩溃。 。
你放什么input.nextLine()
“刷新”
使用hasNextLong是其他的方式(但我宁愿抛出一个异常,因为它是一个例外):
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean end = false;
long value;
while (end == false) {
if (input.hasNextLong()) {
value = input.nextLong();
end = true;
} else {
System.out.println("input the LONG value!");
input.nextLine();
}
}
}
-1
一个简单的解决方法是使用例外。
int value;
do {
System.out.print("Type a number: ");
try {
value = kbd.nextInt();
break;
}
catch(InputMismatchException e) {
System.out.println("Wrong kind of input!");
kbd.nextLine();
}
}
while(true);
相关问题
- 1. 扫描仪验证Java输入,
- 2. 使用扫描仪扫描Java输入
- 3. java扫描仪输入
- 4. Java扫描仪验证返回第二个输入
- 5. 扫描仪不扫描我的输入
- 6. Java的扫描仪解析输入
- 7. 的java:从扫描仪输入
- 8. java扫描仪跳过最后输入
- 9. Java扫描仪使用旧输入
- 10. Java扫描仪输入错误
- 11. Java多行扫描仪输入
- 12. Java扫描仪输入循环
- 13. java扫描仪输入问题
- 14. Java输入,扫描仪和if语句
- 15. Java扫描仪输入字符串
- 16. 如何使用不同的方法验证扫描仪输入?
- 17. 用扫描仪输入
- 18. 扫描仪输入错误
- 19. 扫描仪输入== null?
- 20. 扫描仪跳过输入?
- 21. 循环扫描仪输入
- 22. 通过扫描仪验证输入数据
- 23. 使用while循环和扫描仪验证输入
- 24. 在使用扫描仪时验证用户输入
- 25. 扫描仪输入新扫描仪(doc); <----------错误;预计
- 26. Java中的扫描仪
- 27. Java扫描仪Lookahead
- 28. 扫描仪类Java
- 29. 无法完成扫描仪的输入
- 30. 使用扫描仪类的输入
参见:http://stackoverflow.com/questions/19552811/why-does-this-while-loop-work/19552848#comment29014062_19552848 – Origineil
你能张贴清晰一些代码? – aboger
在OP – Spork