Results 1 to 7 of 7
  1. #1
    kewlgeye is offline Member
    Join Date
    Apr 2008
    Posts
    34
    Rep Power
    0

    Post Writing a countdown array to a file.

    Hello,

    I have an array that is empty at first until a user enters a number say 20, then it counts down showing your numbers in a window 20, 19, 18.... Well, what I am trying to do is print those results to a file as well. I don't want to read, just write, and every time I open the program and enter a new number it will overwrite the previous file. This is what I wrote, but I get an error. This is the error I am receiving and the code below.

    I tried reading some of the other posts, but they didn't seem to be helpful.

    Java Code:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import java.io.*;
    
    public class AnArrayTest{
        Scanner console = new Scanner(System.in);
        JFrame frame;
        
        public AnArrayTest() {
            frame = new JFrame("Array");
            JButton button = new JButton("Enter Here");
            button.addActionListener(new MyAction());
            JPanel panel = new JPanel();
            panel.add(button);
            frame.add(panel);
            frame.setSize(400, 400);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        public class MyAction implements ActionListener{
            public void actionPerformed(ActionEvent e){
    	    PrintWriter outFile = new PrintWriter("C:\\Users\\Philip\\Desktop\\Java  		
    
    	    Programming\\GUI Array\\program.txt");
                String input = JOptionPane.showInputDialog(null,
                                          "Enter the size of the array: ");
                int arraySize = Integer.parseInt(input.trim());
                int[] list = new int[arraySize];
                for (int i = 0; i < list.length; i++) {
                    list[i] = i+1;
                }
                String values = "";
                for(int i = 0; i < list.length; i++) {
                    values += list[i];
                    if(i < list.length-1)
                        values += ", ";
                    if((i + 1) % 40 == 0)
                        values += "\n";
                }
                JOptionPane.showMessageDialog(frame, values + " " +
    		"are your numbers", "Your Silly Numbers", 
                                       JOptionPane.INFORMATION_MESSAGE);
    	    outFile.print(values + " " + "are your numbers");
    	    outFile.close();
                }
            }
        public static void main(String[] args){
            new AnArrayTest();
        }
    }
    My error message is below.
    Attached Thumbnails Attached Thumbnails Writing a countdown array to a file.-error.jpg  

  2. #2
    derrickD is offline Member
    Join Date
    Apr 2007
    Location
    USA
    Posts
    50
    Rep Power
    0

    Default

    If you look at the error, it relates to line 25 and it is an unhandled exception.
    You need either a try/catch block around it or else add a throw to the method which will just need to be caught someplace else.
    Java Code:
    PrintWriter outFile;
    try {
    			outFile = new PrintWriter("C:\\Users\\Philip\\Desktop\\JavaProgramming\\GUI Array\\program.txt");
       } catch (FileNotFoundException e1) {
    			
         //handle this exception somehow
      }

  3. #3
    kewlgeye is offline Member
    Join Date
    Apr 2008
    Posts
    34
    Rep Power
    0

    Default Writing a countdown array to a file

    Ok I thought I did the right thing, but apparently not. If you could have a look and maybe see what I have done. Here is the code, and then the new error that I am receiving.

    Java Code:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import java.io.*;
    import javax.swing.JOptionPane;
    
    
    public class AnArrayTest{
        Scanner console = new Scanner(System.in);
        JFrame frame;
        
        public AnArrayTest() {
            frame = new JFrame("Array");
            JButton button = new JButton("Enter Here");
            button.addActionListener(new MyAction());
            JPanel panel = new JPanel();
            panel.add(button);
            frame.add(panel);
            frame.setSize(400, 400);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        public class MyAction implements ActionListener{
            public void actionPerformed(ActionEvent e){
    	   PrintWriter outFile;
    	try {
    	outFile = new PrintWriter				("C:\\Users\\Philip\\Desktop\\JavaProgramming\\GUI Array\\program.txt");
       	
                String input = JOptionPane.showInputDialog(null,
                                          "Enter the size of the array: ");
                int arraySize = Integer.parseInt(input.trim());
                int[] list = new int[arraySize];
                for (int i = 0; i < list.length; i++) {
                    list[i] = i+1;
                }
                String values = "";
                for(int i = 0; i < list.length; i++) {
                    values += list[i];
                    if(i < list.length-1)
                        values += ", ";
                    if((i + 1) % 40 == 0)
                        values += "\n";
                }
                JOptionPane.showMessageDialog(frame, values + " " +
    		"are your numbers", "Your Silly Numbers", 
                                       JOptionPane.INFORMATION_MESSAGE);
    	    outFile.print(values + " " + "are your numbers");
    	    } catch (FileNotFoundException e1) {
    			
         	    JOptionPane.showMessageDialog(null, "" + e1.getMessage() + " File Not Found	   ", 	    "Invalid Input", 									            JOptionPane.INFORMATION_MESSAGE);
      	    }
    	    outFile.close();
                }
            }
        public static void main(String[] args){
            new AnArrayTest();
        }
    }
    the error pic is at the bottom
    Attached Thumbnails Attached Thumbnails Writing a countdown array to a file.-error.jpg  

  4. #4
    Eranga's Avatar
    Eranga is offline Moderator
    Join Date
    Jul 2007
    Location
    Colombo, Sri Lanka
    Posts
    11,372
    Blog Entries
    1
    Rep Power
    19

    Default

    Few errors are there.

    In the original code, you have formated the file path in wrong way.

    Handling the try-catch block is on wrong place.

    You have close the outFile twice there in your code. It's useless. Sometime it can give an exception, that instance is already destroyed.

    In finally clause, close() not handle IOException. Actually you no need to handle exceptions there according to your code. Even you don't do it garbage collector do it for you.

    So here is the code I have done for you.

    Java Code:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
    import java.io.*;
    
    public class AnArrayTest{
        Scanner console = new Scanner(System.in);
        JFrame frame;
        
        public AnArrayTest() {
            frame = new JFrame("Array");
            JButton button = new JButton("Enter Here");
            button.addActionListener(new MyAction());
            JPanel panel = new JPanel();
            panel.add(button);
            frame.add(panel);
            frame.setSize(400, 400);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        public class MyAction implements ActionListener{
            public void actionPerformed(ActionEvent e){
                PrintWriter outFile = null;
                try {
                    outFile = new PrintWriter("C:\\Users\\Philip\\Desktop\\Java Programming\\GUI Array\\program.txt");
                    String input = JOptionPane.showInputDialog(null, "Enter the size of the array: ");
                    int arraySize = Integer.parseInt(input.trim());
                    int[] list = new int[arraySize];
                    for (int i = 0; i < list.length; i++) {
                        list[i] = i + 1;
                    }
                    String values = "";
                    for (int i = 0; i < list.length; i++) {
                        values += list[i];
                        if (i < list.length - 1) {
                            values += ", ";
                        }
                        if ((i + 1) % 40 == 0) {
                            values += "\n";
                        }
                    }
                    JOptionPane.showMessageDialog(frame, values + " " + "are your numbers", "Your Silly Numbers", JOptionPane.INFORMATION_MESSAGE);
                    outFile.print(values + " " + "are your numbers");
                }
                catch (FileNotFoundException ex) {
                    Logger.getLogger(AnArrayTest.class.getName()).log(Level.SEVERE, null, ex);
                } 
                finally {
                     outFile.close();
                }
            }
        }
        
        public static void main(String[] args){
            new AnArrayTest();
        }
    }

  5. #5
    derrickD is offline Member
    Join Date
    Apr 2007
    Location
    USA
    Posts
    50
    Rep Power
    0

    Default

    Dude, the exception says the outfile is not initialized.
    All you need to do is this:
    Java Code:
     PrintWriter outFile=null;

  6. #6
    kewlgeye is offline Member
    Join Date
    Apr 2008
    Posts
    34
    Rep Power
    0

    Default Thank you

    Thank you. I have to study the import.logging thing, I didn't learn this in my class.

  7. #7
    Eranga's Avatar
    Eranga is offline Moderator
    Join Date
    Jul 2007
    Location
    Colombo, Sri Lanka
    Posts
    11,372
    Blog Entries
    1
    Rep Power
    19

    Default

    Quote Originally Posted by derrickD View Post
    Dude, the exception says the outfile is not initialized.
    All you need to do is this:
    Java Code:
     PrintWriter outFile=null;
    In my code it's there. ;) If our friend use that code, not a case at all to him.

Similar Threads

  1. writing text to file
    By notwist in forum New To Java
    Replies: 3
    Last Post: 04-25-2008, 04:20 AM
  2. Writing to a file (at the end)
    By Java Tip in forum Java Tip
    Replies: 0
    Last Post: 02-08-2008, 09:22 AM
  3. Writing UTF to file using writeUTF
    By Java Tip in forum Java Tip
    Replies: 0
    Last Post: 01-22-2008, 08:19 PM
  4. Reading/Writing a File using byte array
    By Java Tip in forum Java Tip
    Replies: 0
    Last Post: 01-16-2008, 10:41 AM
  5. writing to a file
    By bugger in forum New To Java
    Replies: 1
    Last Post: 11-11-2007, 02:49 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •