File is being created but data is not saving?

itsDathan :

I have looked through several asked questions and have made sure that I closed out the file but none of the data saves. The file is created within the file system, it just appears blank. My program pulls data from another file and does some calculations. It then sends the data through if statements where it prints out what is necessary to a new File.

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws FileNotFoundException {

        int tempf, windspeed;
        Scanner x;

        try {
            x = new Scanner(new File("weatherData.txt"));
            PrintWriter out = new PrintWriter(new File("numbers.txt"));
            while (x.hasNextLine()) {
                String[] data = x.nextLine().split("\\s+"); // Split the line on space(s)

                try  {
                    tempf = Integer.parseInt(data[1]);
                    //System.out.print(tempf + " ");
                } catch (Exception e) {
                    System.out.println("Invalid/No data for temperature");
                    tempf = 0;
                }
                try {
                    windspeed = Integer.parseInt(data[2]);
                    //System.out.println(windspeed);
                } catch (Exception e) {
                    //System.out.println("NA");
                    windspeed = 0;
                }
                 double C1 = -42.379;
                 double C2 = 2.04901523;
                 double C3 = 10.14333127;
                 double C4 = -0.22475541;
                 double C5 = -.00683783;
                 double C6 = -5.481717E-2;
                 double C7 = 1.22874E-3;
                 double C8 = 8.5282E-4;
                 double C9 = -1.99E-6;
                 int celsius = ((tempf-32)*5/9); //Celcius equatin
                 double windmps = windspeed / 2.23694; // Wind in mps equation
                 double windchill = 35.74 + 0.6215*tempf + (0.4275*tempf - 35.75) * Math.pow(windspeed, 0.16); // Windchill equation 
                 double windchillc = ((windchill-32)*5/9);
                 double heatindexf =  C1 + (C2 * tempf) + (C3 * windspeed) + (C4 * tempf * windspeed) + (C5 * Math.pow(tempf,2) + (C6 * Math.pow(windspeed,2)) + (C7 * Math.pow(tempf,2) * windspeed) + (C8 * tempf * Math.pow(windspeed,2)) + (C9 * Math.pow(tempf,2) * Math.pow(windspeed,2)));
                 double heatindexc = ((heatindexf-32)*5/9);

                if (tempf <= 50) {

                    System.out.printf("%20s%20s%20s%20s%20s%20s\n", "Farenheit:","Celsius","Wind Speed(MPH)" ,"Wind Chill(F)" , "Wind Chill(C)" , "Wind Speed(MPS)");
                    System.out.printf("%20d%20d%20d%20d%20d%20d\n", tempf, celsius,windspeed ,(int)windchill, (int)windchillc, (int)windmps);

                }

                else if (tempf >= 80) {
                    System.out.printf("%20s%20s%20s%20s%20s\n", "Farenheit:","Celsius","Humidity %", "Heat Index(F)","Heat Index(C)");
                    System.out.printf("%20d%20d%20d%20d%20d\n", tempf ,celsius,windspeed , (int)heatindexf, (int)heatindexc);
                }

                else if (tempf > 50 && tempf < 80) {
                    System.out.printf("%20s%20s\n","Farenheit:","Celsius");
                    System.out.printf("%20d%20d\n",tempf,celsius);
                }
                out.close();
            }

        } catch (FileNotFoundException e) {
            System.out.println("Unable to read file.");
        }

    }
}
Nilanka Manoj :

You cannot write to writer after closed inside the loop. Change it to :

PrintStream out = new PrintStream(new FileOutputStream("numbers.txt", true)); 
System.setOut(out);
while (x.hasNextLine()) {
    //Loop body

}

out.close();

Also I changed out file to PrintStream then you can directly write system.out prints to file. Without explicitly stating file writes.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=378666&siteId=1