有人可以解释并帮助我修复这个程序。
import java.util.*;
import java.io.*;
public class test {
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
boolean clear;
int in = 0;
do {
clear = true;
try {
in = key.nextInt();
} catch (InputMismatchException e) {
System.out.println("Invalid");
clear = false;
}
} while (clear == false);
String stringIn = Integer.toString(in);
String[] dec = stringIn.split("");
for (int i = 1; i < (dec.length); i++) {
System.out.print(dec[i] + " ");
}
}
}
每当我输入无效输入而不是 int 时,我的程序就会不断循环“无效”,而不是提供为in输入新值的选项。
问题是,如果扫描器未能找到正确格式的输入,它将抛出异常并且不读取输入。
因为扫描器没有读取无效的 int 输入,下一次nextInt
被调用时,它会再次尝试读取无效的输入,并惨遭失败,打印另一个“无效!”
因此,如果发现无效的 int,则需要在之后读取输入:
// do this in the catch block:
key.next();
这确保读取下一个令牌。
完整代码:
Scanner key = new Scanner(System.in);
boolean clear;
int in = 0;
do {
clear = true;
try {
in = key.nextInt();
} catch (InputMismatchException e) {
System.out.println("Invalid");
clear = false;
key.next();
}
} while (clear == false);
String stringIn = Integer.toString(in);
String[] dec = stringIn.split("");
for (int i = 1; i < (dec.length); i++) {
System.out.print(dec[i] + " ");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句