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));
零是数组的默认值。扫描仪是“一次性”的,它是单次通过的。如果您使用过它一次,则必须创建另一个(也许之前将
File
对象放在变量中,然后使用它来创建两个 Scanner
?)或以某种方式反转其状态。第二个循环的迭代次数为零,它再也不会hasNextInt
了
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);
}