【发布时间】:2010-01-27 00:39:23
【问题描述】:
因此,当我的扫描仪期待完整输入时,我正在尝试处理用户输入双精度的可能异常:
boolean go = true;
do {
System.out.print("Please enter one grade from 0 - 100. To end input, enter a
negative integral value.\n");
try {
int myInt = scanner.nextInt();
.
.
.
}
catch (InputMismatchException e) {
System.out.println("Oops!! Please enter only integral numbers");
}
while (go);
这适用于非数字输入(即字母),但如果我输入 3.14 或其他 ASCII 符号(如 -)则无效。在这种情况下,下面的行会重复,直到我终止程序。
Please enter one grade from 0 - 100. To end input, enter a negative integral value.
Oops!! Please enter only integral numbers.
有什么想法吗? :D
回复:我正在使用 System.in 和 java 6。
【问题讨论】:
-
你能比“我的代码爆炸”更精确一点吗?
-
“爆炸”是什么意思?你有另一个例外吗?
-
如果用户在
scanner.nextInt();输入double,并且InputMismatchException确实会被抛出。你确定你没有在你的代码中做其他事情吗?如果不是,读取的值是什么,是否是输入的双精度值的向下舍入版本?