我只需要从 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
问题是我得到了一个随机文本文件,我必须让我的代码读取它并获取范围 (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