无法将数字从文件读入数组

时间:2019-11-01 23:22:04

标签: java arrays java.util.scanner

numbers.txt文件中有26个数字。应该将这26个数字读入arr,但是我在数组中得到26个零。

Scanner scanner = new Scanner(new File("numbers.txt"));
int n = 0;
int i = 0;
while (scanner.hasNextInt()) {
    scanner.next();
    n++;
} // n is now 26 
int[] arr = new int[n];
while (scanner.hasNextInt()) {
    for (i = 0; i < arr.length; i++) {
        arr[i] = scanner.nextInt();
    }
}
System.out.print(Arrays.toString(arr));

2 个答案:

答案 0 :(得分:3)

zeroes是数组的默认值。扫描仪是“一次性使用”的,它是单次通过的。您曾经使用过它,则必须创建另一个(也许是通过将File对象放在变量中,然后使用它来创建两个Scanner?)或以某种方式反转其状态。第二个循环的迭代次数为零,因此不再hasNextInt

答案 1 :(得分:0)

Michał是对的-您需要在scanner = new Scanner(...)行之后重复// n is now 26

或者更好的是,使用ArrayList<Integer>()而不是int[],那么您只需要单次通过:

public static void main(String[] args) throws Exception {
    List<Integer> numbers = new ArrayList<>();
    Scanner scanner = new Scanner(new File("numbers.txt"));
    while (scanner.hasNextInt()) {
        numbers.add(scanner.nextInt());
    }
    System.out.print(numbers);
}