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));
答案 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);
}