我只需要从 Java 中的随机扫描仪文本文件中读取整数。我无法让它跳过非整数并且整个代码中断

I need to read only Integers from a random scanner text file in Java. I can't get it to skip non integers and the whole code breaks

问题是我得到了一个随机文本文件,我必须让我的代码读取它并获取范围 (0-100) 的平均值,并且不能计算非整数。我的问题是,在我的 while 循环开始并转到 if 语句后,我的代码检查文本文件中的值,如果它看到任何非整数,它就会完全停止。 我不知道如何解决这个问题。我想也许在 if 语句中有一些东西告诉扫描仪跳过任何字符串,但我不确定该怎么做。 我尝试使用 .skip() 方法,它让我的代码 运行 正常,但是一旦你输入字符(a-z 和大写字母),它就不会让代码 运行。关于我可以做些什么来解决这个问题的任何想法? 输入文件示例:23 23 44 55 100 0 39 58 thing

代码:

           Scanner input = new Scanner(System.in);
           //asks for file's name
           System.out.print("Input File's name: " );
           String inputFile = input.nextLine();
           //reads the files data
           File file = new File(inputFile);
           Scanner scanFile = new Scanner(file);
           //finds average and totalCount

            while(scanFile.hasNext()) {
                String pattern = "[a-zA-Z]*";
                scanFile.skip(pattern);
                num = scanFile.nextInt();
                if(num >= 0 && num <= 100) {
                    sum += num;
                    totalCount++;   
                    average = sum/totalCount;
                    
                    if(num >= 90) {
                        gradeACount++;
                        percentage = (gradeACount / (float)totalCount) * 100;
                        
                    }
                    
                    
                    if(num < minimumScore)
                        minimumScore = num;
                    
                    if(num > maximumScore)
                        maximumScore = num;
                    
                }
            }
            scanFile.close();

此任务不需要使用 skip()。 您可以检查下一个标记是否为整数并跳过所有非整数。 例如:

while(scanFile.hasNext()) {
    if (!scanFile.hasNextInt()) {
         scanFile.next();
         continue;
    }

    System.out.println(scanFile.nextInt());
}

输出:

23 23 44 55 100 0 39 58