gpt4 book ai didi

java - 我仍然困惑为什么这个程序没有产生我期望的结果

转载 作者:行者123 更新时间:2023-12-02 11:05:30 25 4
gpt4 key购买 nike

我仍然不明白为什么这个程序不能计算并给出我认为会的结果。

我尝试使用 PrintWriter 类的实例将用户在 for 循环中指定的多个浮点值写入用户命名为 Numbers.txt 的文本文件。

然后我创建了 Scanner 类的一个对象 inputFile ,并使用 hasNext 方法在 while 循环中读取这些值,在该循环中计算它们并将结果分配给total 变量;累加器初始化为 0.0。

尽管如此,total 变量的值仍然是 0.0,而不是文件中那些浮点值的累加。

我是 Java 新手,尤其是编程新手,所以请有人帮助我找出问题所在以及如何修复它以获得所需的结果。

提前致谢!以下是我编写的代码部分:

public class FileSum {
public static void main(String[] args) throws IOException {
double individualValues, total = 0.0; // total is an accumulator to store the sum of the values specified in Numbers.txt, thus it must be initialized to 0.0
int numberOfValues;

Scanner kb = new Scanner(System.in);

System.out.print("enter the file name: ");
String fileName = kb.nextLine();

System.out.print("enter the number of floating-point values in the file: ");
numberOfValues = kb.nextInt();

PrintWriter outputFile = new PrintWriter(fileName);

for(int i = 1; i <= numberOfValues; i++) {
System.out.print("the floating-point value number " + i + ": ");
individualValues = kb.nextDouble();
outputFile.println(individualValues);
}

File file = new File(fileName);
Scanner inputFile = new Scanner(file);

while(inputFile.hasNext()) {
individualValues = inputFile.nextDouble();
total = total + individualValues;
}

inputFile.close();
outputFile.close();
kb.close();

System.out.println("the total values in Numbers.txt: " + total);
}}

这是程序输出:

enter the file name: Numbers.txt

enter the number of floating-point values in the file: 2

the floating-point value number 1: 4.5

the floating-point value number 2: 3.2

the total values in Numbers.txt: 0.0

最佳答案

看起来您正在尝试从 System.in 读取一些值,将它们写入文件,然后读取该文件并添加数字。

但是,由于直到程序结束才关闭正在写入的文件,因此在读取文件时无法确定文件内容是否已刷新到文件中。所以你可能 inputFile.hasNext() 总是返回 false

只需在代码中将行 outputFile.close(); 向上移动,这样它就会在您在新文件上创建扫描程序之前发生,那么您应该就可以了!文件将被写入,然后您可以打开它进行阅读。

进一步说明 这是由于 PrintWriter 在调用 println 时不会自动刷新其输出。出于性能原因,它保留在缓冲区中。还有其他采用 autoFlush boolean 值的构造函数。如果设置为 true 它将刷新您写入文件的值。通过调用 close,您将刷新所有等待写入的内容,然后前置与此打开文件相关的所有资源。

关于java - 我仍然困惑为什么这个程序没有产生我期望的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006657/

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