title: Printwriter does not seem to output to specified file after I add a while loop
body: <p>I am in the early stages of a project for school and have already run into a bug. If I simply export the array list contents using the for loop without the while loop everything works fine, but when I want to use the while loop so that I can provide options, the output text file doesn't contain anything as if the program simply didn't do anything but create an empty text file. I am very confused.</p>
  
  <pre><code>import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.PrintWriter;
  import java.util.ArrayList;
  import java.util.Scanner;
  import java.io.PrintStream;
  import javax.swing.JOptionPane;
  import java.util.Arrays;
  
  public class studentProcessor
  {
     public static void main(String[] args) throws FileNotFoundException
     {  
        PrintStream pr=System.out;
        String inputFileName = JOptionPane.showInputDialog("Input file:");
        String outputFileName = JOptionPane.showInputDialog("Output file:");
        File inputFile = new File(inputFileName);
        Scanner in = new Scanner(inputFile);
        PrintWriter out = new PrintWriter(outputFileName);
        ArrayList&lt;Student&gt;student = new ArrayList&lt;Student&gt;();
        while (in.hasNextLine())
        {
            student.add(new Student(in.nextInt(), in.next(), in.nextDouble()));
        }
        in.close();
        boolean done=false;
        while (!done)
          {
              String m=JOptionPane.showInputDialog("Please enter the number for the action which you would like to perform." +
                  "\n1. Add new student(s)\n2. Remove student(s)\n3. Update student's data\n4. Search for student" +
                  "\n5. Sort students\n6. Create GPA report\n7. Output information to a .txt file\n0. Exit");
              if (m.equals("1"))
              {
                  JOptionPane.showMessageDialog(null, "Add new student(s)");
              }
              else if (m.equals("2"))
              {
                  JOptionPane.showMessageDialog(null, "Remove student(s)");
              }
              else if (m.equals("3"))
              {
                  JOptionPane.showMessageDialog(null, "Update student's data");
              }
              else if (m.equals("4"))
              {
                  JOptionPane.showMessageDialog(null, "Search for a student");
              }
              else if (m.equals("5"))
              {
                  JOptionPane.showMessageDialog(null, "Sort students");
              }
              else if (m.equals("6"))
              {
                  JOptionPane.showMessageDialog(null, "Create GPA report");
              }
              else if (m.equals("7"))
              {
                  JOptionPane.showMessageDialog(null, "Output information to a .txt file");
                  out.println("The students' information is listed below:");
                  for (Student Stu:student)
                  {
                      out.println(Stu.getId()+" "+Stu.getLName()+" "+Stu.getGpa());
                  }
              }
              else if (m.equals("0"))
              {
                  System.exit(0);
                  done=true;
              }
              else 
              {
                  JOptionPane.showMessageDialog(null, "You have not entered a valid command, try again.");
              }
          }
        out.close();
     }
  }
  </code></pre>
  
  <p>and here is the Student class I am using.</p>
  
  <pre><code>class Student
  { 
   private int id;
   private String lName;
   private double gpa;
  
   public Student (int studentId, String studentLName, double studentGpa)
     { 
       id=studentId;
       lName=studentLName;
       gpa=studentGpa;
     }
  
   public int getId()
     { return id; }
  
   public String getLName()
     { return lName; }
  
   public double getGpa()
     { return gpa; }
  
   public void setId(int id)
     { this.id=id; }
  
   public void setLName(String lName)
     { this.lName=lName; }
  
   public void setGpa(double gpa)
     { this.gpa=gpa; }
  
  }
  </code></pre>
  
  <p>thanks for any help =]</p>
  
  <p>EDIT: this is the new section of the code that works with printwriter now. thanks for all the help!</p>
  
  <pre><code>else if (m.equals("7"))
          {
              String outputFileName = JOptionPane.showInputDialog("Designate an output file for student information:");
              PrintWriter out = new PrintWriter(outputFileName);
              out.println("The students are listed below:");
              for (Student Stu:student)
              {
                  out.println(Stu.getId()+" "+Stu.getLName()+" "+Stu.getGpa());
              }
              out.close();
          }
  </code></pre>