gpt4 book ai didi

java,当不是数组时将计算值打印到文件中?

转载 作者:行者123 更新时间:2023-12-01 17:19:18 25 4
gpt4 key购买 nike

该程序计算 9 个行星的表面重力,以格式化表格将数据打印到屏幕上,并且应该仅将表面重力值打印到文件中。我不确定为什么我的代码不会将计算出的 SurfaceGravity 值打印到名为 gravities2.txt 的文件中。有人可以提供一些启示吗?是否可能是因为重力数据没有放入数组中 - 它只是循环的值?

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;

public class GravityV1
{
//print the data to screen
public static void printResults(String[] names, double[] diameter, double[] mass, int x)
{
System.out.printf("%-10s%21.2f%20.4e",names[x],diameter[x],mass[x]);
}

//calculate the surface gravity
public static double calcGravity(double m, double d)throws IOException
{
double gravity = 0.0;

gravity = (((6.67E-11) * (m)) / (Math.pow((d) / 2, 2)));

printToFile(gravity);

return gravity;
}

//writes gravity data to a text file
public static void printToFile(double gravity)throws IOException
{
File gravities = new File("gravity2.txt");

PrintWriter outFile = new PrintWriter(gravities);

outFile.printf("%2.2f\n", gravity);
}

//main method
public static void main (String [ ] args) throws IOException
{
double[] mass = { 3.30E23, 4.869E24, 5.972E24, 6.4219E23, 1.900E27, 5.68E26, 8.683E25, 1.0247E26, 1.27E22 };

double[] diameter = { 4880000, 12103000.6, 12756000.3, 6794000, 142984000, 120536000, 51118000, 49532000, 2274000 };

String[] names = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto" };

System.out.printf("%-7s%20s%20s%20s\n","Planet Name","Diameter","Mass(kg)", "g (m/s^2)");
System.out.println("=============================================================================");

for (int x = 0; x < 9; x++) {
printResults(names, diameter, mass, x);

double surfaceGravity = calcGravity(mass[x], diameter[x]);

System.out.printf("%17.2f\n", surfaceGravity);
}

System.out.println();
}
}

屏幕上的输出是正确的,但不幸的是该文件不包含任何内容。文件确实被创建了,所以我认为这是一件好事......非常感谢任何帮助!!

最佳答案

您需要关闭并刷新PrintWriter。这是因为 PrintWriter 会“缓冲”您的输出,或者保存它,并且只有在保存了相当数量的情况下才进行写入(这有助于您的程序运行得更快,因为它会导致更少的大写入,而不是大量小写入)。关闭或刷新文件会强制其写入。

在函数末尾添加 outFile.close() 会有帮助,尽管您应该尝试重构代码,这样您就不必不断创建新的编写器,并且可以简单地关闭当你完成时,一位作家!

关于java,当不是数组时将计算值打印到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898861/

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