1

假设我有一个主要是数字的文件,还有一些字母

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(); }        
    }
4

2 回答 2

5

您需要添加in.next();catch,否则scanner将无法前进。

于 2012-07-28T07:09:37.127 回答
0

问题:您正在使用 nextInt() 函数单独读取整数。

当 Scanner 遇到一个角色时,它会进入 catch 块。尝试在 catch 块中推进扫描仪,否则字符“d”将被一遍又一遍地读取

于 2012-07-28T07:33:48.317 回答