将数字从文件读取到数组时遇到问题

问题描述 投票:0回答:2

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));
java arrays java.util.scanner
2个回答
3
投票

零是数组的默认值。扫描仪是“一次性”的,它是单次通过的。如果您使用过它一次,则必须创建另一个(也许之前将

File
对象放在变量中,然后使用它来创建两个
Scanner
?)或以某种方式反转其状态。第二个循环的迭代次数为零,它再也不会
hasNextInt


1
投票

Mika 是对的 -- 您需要在

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.