当前位置: 首页 > 面试题库 >

PrintWriter将文本添加到文件

吕飞翼
2023-03-14
问题内容

在我的在线计算机科学课上,我必须编写一个程序来确定太阳系中每个行星的表面重力。除了一个方面,我几乎已经掌握了它的所有方面。我需要使用单独的方法将表面重力写入文件。这是我目前的方法:

public static void writeResultsToFile(double g) throws IOException{

    PrintWriter outFile = new PrintWriter(new File("planetaryData.txt"));

    outFile.printf("%.2f%n", g);
    outFile.close();
}

我的问题是,当我将其写入文件时,它将覆盖先前的值。我如何获得它包括所有的价值。如果有帮助,这是我的全部代码:

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


public class gravityV1 {

    /**
     * @param args
     */

    public static double calculateSurfaceGravity(double d, double M){
        double G = 6.67 * Math.pow(10, -11);
        double r = d;
        double g;

        g = G * M/Math.pow(r/2*1000, 2);

        return g;
    }

    public static void printResultsToScreen(String planetName, double diameterKm, double massKg, double g){

        System.out.printf("%-15s%-17.0f%-17.2e%.2f%n", planetName, diameterKm, massKg, g);

    }

    public static void writeResultsToFile(double g) throws IOException{

        PrintWriter outFile = new PrintWriter(new File("planetaryData.txt"));

        outFile.printf("%.2f%n", g);
        outFile.close();
    }

    public static void main(String[] args) throws IOException {
        // Variables
        String [] planetName = new String[8];
        planetName[0] = "Mercury";
        planetName[1] = "Venus  ";
        planetName[2] = "Earth  ";
        planetName[3] = "Mars   ";
        planetName[4] = "Jupiter";
        planetName[5] = "Saturn ";
        planetName[6] = "Uranus ";
        planetName[7] = "Neptune";
        double [] diameterKm = new double[8];
        diameterKm[0] = 4880;
        diameterKm[1] = 12103.6;
        diameterKm[2] = 12756;
        diameterKm[3] = 6794;
        diameterKm[4] = 142984;
        diameterKm[5] = 120536;
        diameterKm[6] = 51118;
        diameterKm[7] = 49532;
        double [] massKg = new double[8];
        massKg[0] = 3.30 * Math.pow(10, 23);
        massKg[1] = 4.869 * Math.pow(10, 24);
        massKg[2] = 5.97 * Math.pow(10, 24);
        massKg[3] = 6.4219 * Math.pow(10, 23);
        massKg[4] = 1.900 * Math.pow(10, 27);
        massKg[5] = 5.68 * Math.pow(10, 26);
        massKg[6] = 8.683 * Math.pow(10, 25);
        massKg[7] = 1.0247 * Math.pow(10, 26);
        double [] g = new double[8];
        int array = 0;

        //code

        System.out.printf("%s%20s%15s%15s%n", "Planet", "Diameter (km)", "Mass (kg)", "g (m/s^2)");

        for(double d : diameterKm){
            g[array] = calculateSurfaceGravity(d, massKg[array]);
            printResultsToScreen(planetName[array], d, massKg[array], g[array]);
            writeResultsToFile(g[array]);
            array++;
        }
    }

}

问题答案:

这样做是为了创建PrinterWriter带有FileWriter追加模式的作品:

PrintWriter outFile = new PrintWriter(new FileWriter("planetaryData.txt", true));


 类似资料:
  • 问题内容: 我正在尝试将一些文件添加到ZIP文件中,它会创建文件,但不会在其中添加任何内容。代码1: 我的功能: 编辑: 我发现了问题,只是在将文件从C:\驱动器写入F:\驱动器的ZIP时遇到麻烦 问题答案: 您不能压缩文件夹,只能压缩文件。要压缩文件夹,必须手动添加所有子文件。我写了本课来完成这项工作。您可以免费获得它:) 用法是这样的: 这是课程: 请享用! 编辑 :要检查程序是否仍在忙,可以

  • 如果我的问题不是很具体,下面是我想做的。我有一个计算器,它有两个JTextField,一个JLabel(“Answer=”),一个JTextField作为答案。 我有一个JButton数组(0到9),允许用户点击它们,将数字添加到JTextField中,光标在其中处于活动状态。。。这就是问题所在。我只能让两个文本字段中的一个向它们添加数字,或者两者都向彼此添加相同的数字。 例如,如果我点击一个按钮

  • 问题内容: 我想更新SQL表中的1列。示例:列中的当前值是这样的 现在,我想像这样更新整个专栏:www.mypizza.com/2013/09/pizzalover.jpg有什么办法可以做到这一点?提前致谢 问题答案: 您可以使用语句简单地更新列

  • 问题内容: 首先,我对Java非常基础。我正在尝试浏览.txt文件并将其内容加载到文本区域。我已经完成了该部分,直到从JFileChooser接收文件为止,现在我不知道如何做其余的工作。 问题答案: 使用所有Swing文本组件都支持的read(…)和write(…)方法。简单的例子:

  • 问题内容: 如果我的问题不是很具体,这就是我想要做的。我有一个具有两个JTextField,一个JLabel(“ Answer =”)和一个JTextField作为答案的计算器。 我有一个JButtons数组(0到9),允许用户单击它们以将数字添加到JTextField中,其中的光标处于活动状态…这是这里的问题。我只能让两个文本字段之一向它们添加数字,或者都向彼此添加相同的数字。 例如,如果我单击

  • 问题内容: 我正在使用ejs在node.js(express)上工作,并且无法在其中包含.css文件。我分别尝试了与html- css二重奏相同的事情,并且效果很好…我如何在其中包含相同的内容我的.ejs文件。我的app.js因此: 和index.ejs文件: style.css文件: 问题答案: 您的问题实际上并非特定于ejs。 这里要注意的两件事 style.css 是一个外部css文件。因此