我遇到了方法问题。任务是扫描包含不同数字的文件。我想创建一个方法来扫描文件中的数字1到10.
问题是while循环永远不会激活。这是因为值永远不是真的,或者方法hasNextInt有问题以这种方式使用我不知道。
我已经使用循环内外的print语句进行检查,以找出方法的问题。
代码:
package jr222er_lab4;
import java.util.Scanner;
import java.io.*;
public class Histogram {
public static void main(String[] args) throws IOException{
File file = new File ("C:\\Users\\Johan\\Desktop\\histo.txt"); // imports our file
Scanner n = new Scanner(file); // creates scanner
System.out.println("Reading values from: "+file);
int oneToHund = 0;
int other = 0;
while (n.hasNextInt()){
int i = n.nextInt();
if (i >= 1 && i <= 100){
oneToHund++;
}
else
other++;
}
System.out.println("Numbers between [1,100]: "+oneToHund);
System.out.println("Numbers out of this range: "+other);
System.out.println("1 - 10 | "+firstTen(n));
}
// method in question
private static int firstTen(Scanner n){
int result = 0;
while (n.hasNextInt()){
int i = n.nextInt();
if (i >= 1 && i <= 10){
result++;
}
}return result;
}
奖金问题:我尝试在主要方法中执行此操作但似乎扫描程序已通过第一项任务(检查数字1 - 100)搜索文件,这是如何工作的?
答案 0 :(得分:0)
firstTen(n)
返回0,因为传递给方法已经三遍游标的扫描程序对象位于最后一个位置。在调用firstTen方法之前添加n = new Scanner(file);