PrintWriter ajouter du texte à un fichier
Dans ma classe informatique je dois écrire un programme afin de déterminer la gravité de surface sur chaque planète dans le système solaire. J'ai obtenu presque tous les aspects de travailler sauf une. J'ai besoin d'écrire la surface de la gravité d'un fichier à l'aide d'une méthode distincte. C'est ma méthode actuelle:
public static void writeResultsToFile(double g) throws IOException{
PrintWriter outFile = new PrintWriter(new File("planetaryData.txt"));
outFile.printf("%.2f%n", g);
outFile.close();
}
Mon problème est que lorsque je l'écris dans un fichier, il remplace la valeur précédente. Comment puis-je obtenir inclure toutes les valeurs. Voici l'intégralité de mon code si ça peut aider:
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++;
}
}
}
Envelopper l'impression écrivain autour d'un FileWriter et utiliser le mode append -
Je dirai que comme une réponse.
Je l'aurais mais je suis sûr que cette question est un doublon. Toujours à la recherche de la question précédente qui, je suis sûr que j'ai vu sur l'avant.
double possible de Comment faire pour ajouter des données à un fichier?
Pas une dup -- ajout est une mauvaise réponse
new FileWriter(String, boolean)
Je dirai que comme une réponse.
Je l'aurais mais je suis sûr que cette question est un doublon. Toujours à la recherche de la question précédente qui, je suis sûr que j'ai vu sur l'avant.
double possible de Comment faire pour ajouter des données à un fichier?
Pas une dup -- ajout est une mauvaise réponse
OriginalL'auteur spenserpro | 2013-01-21
Vous devez vous connecter pour publier un commentaire.
Ce faire, afin de créer un
PrinterWriter
de travail avec unFileWriter
en mode ajout:OriginalL'auteur piokuc
De Mkyong des tutoriels:
Vous pouvez utiliser quelque chose comme -
OriginalL'auteur Swapnil
Deux problèmes:
1) Vous écraser le fichier à chaque fois.
printResultsToFile
devrait prendre l'ensemble du tableau, et pas seulement une donnée. Appelez ça de l'extérieur de votre boucle.2) d'Envisager d'entrer votre point flottant, 2.08e24 pour des raisons de concision.
OriginalL'auteur Mel Nicholson
le code suivant fonctionne aussi pour ouvrir de nom de fichier planetaryData.txt.
PrintWriter outFile = new PrintWriter("planetaryData.txt");
OriginalL'auteur Hari Prasad