假设我有一个主要是数字的文件,还有一些字母
1
4
5
d o
2
8 22
6
f
所以我想要计算多少个数字和字母,我只能使用nextInt()方法。这是我正在使用的代码,但由于某种原因,我得到一个无限循环,在做了一些调试(打印输入)后,它将停在第5位。为什么我在这里做错了?
public static void mixedF() {
int numbers = 0;
int words = 0;
int num;
try {
Scanner in = new Scanner(new File("myFile.txt"));
while(in.hasNext()) {
try {
num = in.nextInt();
System.out.println(num);
numbers++;
}
catch (InputMismatchException e) { words++; }
}
System.out.println("numbrers: "+numbers);
System.out.println("words: "+words);
}
catch (FileNotFoundException ex) { ex.getMessage(); }
}
答案 0 :(得分:5)
您需要将in.next();
添加到catch
,否则scanner
将无法继续前进。
答案 1 :(得分:0)
问题:您正在使用nextInt()函数单独读取整数。
当Scanner遇到一个角色时,它会进入catch块。尝试在catch块中推进扫描仪,或者反复阅读字符“d”