gpt4 book ai didi

java - 将 int 写入文件并读取它们,hasNext() 返回 false

转载 作者:行者123 更新时间:2023-12-01 20:19:57 27 4
gpt4 key购买 nike

我必须将 100 个随机整数写入文件,并按升序显示它们。 PrintWriter 写入它们,但是当我尝试从文件读取时,方法 hasNext() 返回 false,我不明白为什么。我认为问题出在 PrintWriter 上。

try(PrintWriter output = new PrintWriter(file);
Scanner input = new Scanner(file)) {

for (int i = 0; i < 100; i++) {
output.print((int)(Math.random() * 101) + " ");
}

int[] numbers = new int[100];
int i = 0;
while (input.hasNextInt()) {
numbers[i++] = input.nextInt();
}

Arrays.sort(numbers);
for (int n : numbers)
System.out.println(n);

} catch (FileNotFoundException ex) {
System.out.println("Cannot find the file!");
}

最佳答案

您需要刷新输出流,以便将更改写入文件。

...
for (int i = 0; i < 100; i++) {
output.print((int) (Math.random() * 101) + " ");
}

output.flush();
...

此外,在这种情况下,close 会自动刷新流 - 因此,如果您尝试在 try block 之后读取文件,您看到变化。对于PrintWriter ,每当打印换行符时也会调用 flush (通过 println 或通过 printf/print 手动)。

我认为同时打开读取器和写入器通常不是一个好主意。

关于java - 将 int 写入文件并读取它们,hasNext() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com