Solved

Java error

Posted on 2009-05-08
12
1,398 Views
Last Modified: 2012-08-13
I receive this error when running my program.  Its a Java Mortgage calculator For school.  The assignment is:
Write the program in Java (with a graphical user interface) and have it calculate and display the mortgage payment amount from user input of the amount of the mortgage and the user's selection from a menu of available mortgage loans. Use an array for the mortgage data for the different loans. Read the interest rates to fill the array from a sequential file. Display the mortgage payment amount followed by the loan balance and interest paid for each payment over the term of the loan. Add graphics in the form of a chart. Allow the user to loop back and enter a new amount and make a new selection or quit. Please insert comments in the program to document the program.

The program compiles fine and executes, but when it runs I receive this in the command prompt.  Also I am unable to pull loan info from my external file.  My external file has this
7, 0.0535
15, 0.0550
30, 0.0575

The error in the command prompt is this:
java.lang.NumberFormatException: For input string: "0.0535"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at Mort6.load(Mort6.java:94)
        at Mort6.<init>(Mort6.java:72)
        at Mort6$1.run(Mort6.java:425)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
/*

 PRG 421 Java Programming II  Change Request 7, Week 5

 Programmer: Nate Himley

 Date: May 9, 2009

 Filename: Mort6.java

 Purpose: Write the program in Java (with a graphical user interface) and have it calculate and 
 

display the mortgage payment amount from user input of the amount of the mortgage and the user's 
 

selection from a menu of available mortgage loans. Use an array for the mortgage data for the 
 

different loans. Read the interest rates to fill the array from a sequential file. Display the 
 

mortgage payment amount followed by the loan balance and interest paid for each payment over the 
 

term of the loan. Add graphics in the form of a chart. Allow the user to loop back and enter a new 
 

amount and make a new selection or quit. Please insert comments in the program to document the 
 

program.

 */
 

import java.awt.*;

import java.awt.event.*;

import java.awt.Component;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.font.*;

import java.awt.Font;

import java.awt.geom.*;

import java.awt.Insets;

import java.awt.LayoutManager;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.Reader;

import java.text.MessageFormat;

import java.text.NumberFormat;

import java.io.FileReader;

import java.io.*;

import javax.swing.*;

import javax.swing.event.*;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;
 
 

public class Mort6 extends JFrame implements ActionListener

{

     JLabel Llabel; 

     JTextField Ltextfield;

     JLabel Olabel;

     JComboBox options;

     JLabel Tlabel;

     JTextField Ttextfield;

     JLabel Rlabel;

     JTextField Rtextfield;

     JLabel Plabel;  

     JLabel $label;  

     JButton calculate;  

     JButton reset;  

     JButton end;  

     JTable table;

     JMenuItem mnuExit = new JMenuItem("Exit");

     DefaultTableModel model;

     int[] trmArray;

     double[] intrstArray;

     JButton graph;

     private float[]  yearlyPrinciple;

     private float[]  yearlyInterest;
 

     // Title

     public Mort6 ()

     {

          super("Nate Himley Week 5");

          setDefaultLookAndFeelDecorated(true);

          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          load();

          init();

          pack();

          setVisible(true);

     }
 

     //Pull info from file
 

     public void load()

     {

          Reader fis;

               try

               {
 

                    fis = new FileReader("data.txt");
 

                    BufferedReader b = new BufferedReader( fis );
 

                    String[] line = b.readLine(  ).split(",");

                    trmArray = new int[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         trmArray[ i ] = Integer.parseInt(line[i].trim());

                    }
 

                    line = b.readLine(  ).split(",");

                    intrstArray = new double[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         intrstArray[ i ] = Double.parseDouble(line[i].trim());

                    }
 

               b.close();

               fis.close();

               }
 

               catch ( Exception e1 )

               {

                    e1.printStackTrace(  );

               }

     }
 

     //labels, buttons and textfields
 

     public void init()

     {

          Mort6Layout customLayout = new Mort6Layout();
 

          Container con = getContentPane();

          con.setLayout(customLayout);
 

          con.setFont(new Font("Arial", Font.PLAIN, 12));

          con.setLayout(customLayout);
 

          Llabel = new JLabel("Mortgage Loan Amount $ (no comma)");

          con.add(Llabel);
 

          Ltextfield = new JTextField("");//amount textfield

          con.add(Ltextfield);
 

          Olabel = new JLabel("Term & Interest Rate %");

          con.add(Olabel);
 

          options = new JComboBox();

          con.add(options);
 

          options.addItem(" (Preset rate)");

          options.addItem("7 years at 5.35%");

          options.addItem("15 years at 5.5%");

          options.addItem("30 years at 5.75%");
 

          Tlabel = new JLabel("Term (years)");

          con.add(Tlabel);
 

          Ttextfield = new JTextField("");

          con.add(Ttextfield);
 

          Rlabel = new JLabel("Interest Rate");

          con.add(Rlabel);
 

          Rtextfield = new JTextField("");

          con.add(Rtextfield);
 

          Plabel = new JLabel("Monthly Payment Amount");

          con.add(Plabel);
 

          $label = new JLabel("");

          con.add($label);
 

          calculate = new JButton("Calculate");

          con.add(calculate);

          calculate.setBackground(Color.white);
 

          reset = new JButton("Clear");

          con.add(reset);

          reset.setBackground(Color.white);
 

          end = new JButton ("End");

          con.add(end);

          end.setBackground(Color.white);
 

                    //table header names

          String[] columnNames = {"Payment #","Payment Amount", "Interest", "Principle Reduction",

                                             "Remaining Balance"};
 

          //create table and table model

          model = new DefaultTableModel(columnNames, 0);

          table = new JTable(model);

          JScrollPane scroll = new JScrollPane(table);

          table.setPreferredScrollableViewportSize(new Dimension (10, 600));

          con.add (scroll);
 

          graph = new JButton ("See Graph");

          con.add(graph);

          graph.setBackground(Color.white);
 

          //action listeners

          Ltextfield.addActionListener(this); 

          options.addActionListener(this); 

          calculate.addActionListener(this);  

          reset.addActionListener(this); 

          end.addActionListener(this);  

          graph.addActionListener(this);  

     }
 
 

     //action event from listeners

     public void actionPerformed(ActionEvent event)

     {

     Object source = event.getSource();

          if (source == calculate)

          {

               startCalculations();

          }
 

          if (source == reset)

          {

               reset();

          }
 

          if (source==options)

          {

               setRate();

          }
 

          if (source == end)

          {

               exit();

          }
 

          if (source == mnuExit)

          {

            exitGraph();

           }

          if (source == graph)

          {

               mFrame = new JFrame("Mortgage Graph");

               mFrame.getContentPane().add(new GraphPanel(yearlyPrinciple, yearlyInterest));

               mFrame.setSize(800,600);

               mFrame.setLocation(200,100);
 

             //trying to create menu

             // Create an instance of the menu (Creates the Menu Bar)

                 JMenuBar mnuBar = new JMenuBar();

                 mFrame.setJMenuBar(mnuBar);
 

             // Construct and populate the Exit menu (Creates the Exit Menu)

                 JMenu mnuExitbar = new JMenu ("End", true);

                 mnuBar.add(mnuExitbar);

                 mnuExitbar.add(mnuExit);
 

        mFrame.setVisible(true);
 

               //exit listener

                mnuExit.addActionListener(this);  

          }

        }

          public JFrame mFrame = new JFrame();
 
 

void exitGraph()

{
 

             mFrame.dispose();

             mFrame = null;

          }
 

          void setRate()

     {

          int index = options.getSelectedIndex();
 

          //term and interest error check

          if (index > 0)

          {

               try

               {

                    Ttextfield.setText(Integer.toString(trmArray[index-1]));

               }
 

               catch (NumberFormatException e)

               {

                    JOptionPane.showMessageDialog(null, "Invalid or missing Loan Term.  Please try 
 

again!",

                                                            "Message Dialog", 
 

JOptionPane.PLAIN_MESSAGE);

                    Ttextfield.setText(null);

               }
 

               try

               {

                    Rtextfield.setText(Double.toString(intrstArray[index-1]));

               }
 

               catch (NumberFormatException e)

               {

                    JOptionPane.showMessageDialog(null, "Invalid or missing Interest Rate.  Please 
 

try again!",

                                                       "Message Dialog", 
 

JOptionPane.PLAIN_MESSAGE);

                    Rtextfield.setText(null);

               }

          }

     }
 

     //calculation section

     void startCalculations()

     {

          Thread thisThread = Thread.currentThread();

          NumberFormat currency = NumberFormat.getCurrencyInstance();
 

          double amt = 0;

          double trm = 0;

          double intrst = 0;

          double moIn = 0;

          double moTrm = 0;

          double prin = 0;

          double paymt = 0;
 

          //amount error check

          try

          {

               amt = Double.parseDouble(Ltextfield.getText());

          }
 

          catch (NumberFormatException e)

          {

               JOptionPane.showMessageDialog(null, "Missing Amount or Use of Commas",

                                             "Message Dialog", JOptionPane.PLAIN_MESSAGE);

               Ltextfield.setText(null);

               Ttextfield.setText(null);

               Rtextfield.setText(null);

               options.setSelectedIndex(0);

          }
 

          //term and interest error check

          try

          {

               trm = Double.parseDouble(Ttextfield.getText());
 

          }
 

          catch (NumberFormatException e)

          {

               JOptionPane.showMessageDialog(null, "Invalid or missing Loan Term.  Please try 
 

again!",

                                                  "Message Dialog", JOptionPane.PLAIN_MESSAGE);

               Ttextfield.setText(null);

          }
 

          try

          {

               intrst = Double.parseDouble(Rtextfield.getText());

          }
 

          catch (NumberFormatException e)

          {

               JOptionPane.showMessageDialog(null, "Invalid or missing Interest Rate.  Please try 
 

again!",

                                             "Message Dialog", JOptionPane.PLAIN_MESSAGE);

               Rtextfield.setText(null);

          }
 

          if (amt > 0)

          {

               amt = Double.parseDouble(Ltextfield.getText());

               moIn = (intrst / 1200);//monthly interest rate

               moTrm = trm * 12;//number of payments

               paymt = (amt * moIn) / (1-Math.pow((1+moIn), -moTrm));//amount forumla

                  yearlyPrinciple = new float[(int)trm]; // initialize the arrays to store yearly 
 

principle and interest

                  yearlyInterest = new float[(int)trm];
 

               $label.setText("" + currency.format(paymt));
 

               double newPrin = amt;
 

               for (int i = 0; i < trm; i++)

               {

                       yearlyInterest[i] = 0.0f; 

                         yearlyPrinciple[i] = 0.0f; 

                       for(int j = 1; j <=12; j++)

                         {

                    double newIn = moIn * newPrin;

                    double reduct = paymt - newIn;

                         yearlyInterest[i] += newIn; 

                         yearlyPrinciple[i] += reduct; 

                         newPrin = newPrin - reduct;
 

                    

                    if (newPrin < 0)

                         newPrin = 0;

                    else

                         newPrin = newPrin;
 

                    

                    model.addRow(new Object[] { Integer.toString((i*12) + j), 
 

currency.format(paymt),

                    currency.format(newIn), currency.format(reduct), currency.format(newPrin) });

                         }

                        

 //                      model.addRow(new Object[] { Integer.toString(i), currency.format(0.0),

//                    currency.format(yearlyInterest[i]), currency.format(yearlyPrinciple[i]), 
 

currency.format(0.0) });

               }

          }
 

          //less than 0 error check

          if (amt < 0)

          {

               JOptionPane.showMessageDialog(null, "Please Enter Positie Numbers Only.",

                                             "Message Dialog", JOptionPane.PLAIN_MESSAGE);

               Ltextfield.setText(null);

          }
 

     }
 

     //resets all fields

     void reset()

     {

          Ltextfield.setText(null);

          Ttextfield.setText(null);

          Rtextfield.setText(null);

          options.setSelectedIndex(0);

          $label.setText(null);

          model.setRowCount(0);

     }
 

     //exit the program with thank you message

     void exit()

     {

          JOptionPane.showMessageDialog(null, "          Thank you for using \n Mortgage 
 

Calculator",

                                             "Message Dialog", JOptionPane.PLAIN_MESSAGE);
 

          System.exit(0);

     }
 

     public static void main(String args[])

     {

          java.awt.EventQueue.invokeLater(new Runnable()

          {

               public void run()

               {

                    new Mort6().setVisible(true);

               }

          });

     }

}
 

//creates class for container layout and placement

class Mort6Layout implements LayoutManager{

     public Mort6Layout() {}
 

     public void addLayoutComponent(String name, Component comp) {}
 

     public void removeLayoutComponent(Component comp) {}
 

     public Dimension preferredLayoutSize(Container parent)

     {

          Dimension dim = new Dimension(0, 0);

          Insets insets = parent.getInsets();

          dim.width = 600 + insets.left + insets.right;

          dim.height = 425 + insets.top + insets.bottom;
 

          return dim;

     }
 

     public Dimension minimumLayoutSize(Container parent)

     {

          Dimension dim = new Dimension(0, 0);
 

          return dim;

     }
 

     public void layoutContainer(Container parent)

     {

          Insets insets = parent.getInsets();
 

          Component c;

          c = parent.getComponent(0);

               if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+8,250,24);}

          c = parent.getComponent(1);

               if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+8,175,24);}

          c = parent.getComponent(2);

               if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+40,250,24);}

          c = parent.getComponent(3);

               if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+40,150,24);}

          c = parent.getComponent(4);

               if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+72,250,24);}

          c = parent.getComponent(5);

               if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+72,96,24);}

          c = parent.getComponent(6);

               if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+104,250,24);}

          c = parent.getComponent(7);

               if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+104,112,24);}

          c = parent.getComponent(8);

               if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+136,250,24);}

          c = parent.getComponent(9);

               if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+136,112,24);}

          c = parent.getComponent(10);

               if (c.isVisible()) {c.setBounds(insets.left+50,insets.top+168,96,24);}

          c = parent.getComponent(11);

               if (c.isVisible()) {c.setBounds(insets.left+225,insets.top+168,112,24);}

          c = parent.getComponent(12);

               if (c.isVisible()) {c.setBounds(insets.left+400,insets.top+168,96,24);}

          c = parent.getComponent(13);

          if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+200,575,160);}

          c = parent.getComponent(14);

          if (c.isVisible()) {c.setBounds(insets.left+225,insets.top+375,112,24);}

     }

}
 

class GraphPanel extends JPanel

{

    final int

        HPAD = 60,

        VPAD = 40;

    int[] data;

    Font font;

     float[] principleData;

     float[] interestData;
 
 

    public GraphPanel(float[] p, float[] i)

    {
 

     principleData = p;

     interestData = i;
 

        font = new Font("lucida sans regular", Font.PLAIN, 16);

        setBackground(Color.white);

    }
 

    protected void paintComponent(Graphics g)

    {

        super.paintComponent(g);
 

        Graphics2D g2 = (Graphics2D)g;

        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

                            RenderingHints.VALUE_ANTIALIAS_ON);

        g2.setFont(font);

        FontRenderContext frc = g2.getFontRenderContext();

        int w = getWidth();

        int h = getHeight();

        // scales

        float xInc = (w - HPAD - VPAD) / (interestData.length - 1);//11f;   

        float yInc = (h - 2*VPAD) / 10f;

        int[] dataVals = getDataVals();        //min and max values for y-axis

        float yScale = dataVals[2] / 10f;
 

        // ordinate (y - axis)

        g2.draw(new Line2D.Double(HPAD, VPAD, HPAD, h - VPAD));

        // plot tic marks

        float x1 = HPAD, y1 = VPAD, x2 = HPAD - 3, y2;

        for(int j = 0; j < 10; j++)

        {

            g2.draw(new Line2D.Double(x1, y1, x2, y1));

            y1 += yInc;

        }

        // labels

        String text; LineMetrics lm;

        float xs, ys, textWidth, height;

        for(int j = 0; j <= 10; j++)

        {

            text = String.valueOf(dataVals[1] - (int)(j * yScale));

            textWidth = (float)font.getStringBounds(text, frc).getWidth();

            lm = font.getLineMetrics(text, frc);

            height = lm.getAscent();

            xs = HPAD - textWidth - 7;

            ys = VPAD + (j * yInc) + height/2;

            g2.drawString(text, xs, ys);

        }
 

        // abcissa (x - axis)

        g2.draw(new Line2D.Double(HPAD, h - VPAD, w - VPAD, h - VPAD));

        // tic marks

        x1 = HPAD; y1 = h - VPAD; y2 = y1 + 3;

        for(int j = 0; j < interestData.length; j++)

        {

            g2.draw(new Line2D.Double(x1, y1, x1, y2));

            x1 += xInc;

        }

        // labels

        ys = h - VPAD;

        for(int j = 0; j < interestData.length; j++)

        {

            text = String.valueOf(j + 1);

            textWidth = (float)font.getStringBounds(text, frc).getWidth();

            lm = font.getLineMetrics(text, frc);

            height = lm.getHeight();

            xs = HPAD + j * xInc - textWidth/2;

            g2.drawString(text, xs, ys + height);

        }
 

        // plot data

          float yy2 = 0, yy1 = 0, xx2 = 0, xx1;

        x1 = HPAD;

          xx1 = HPAD;

        yScale = (float)(h - 2*VPAD) / dataVals[2];
 

        for(int j = 0; j < interestData.length; j++)

        {

          g.setColor(Color.blue);

          y1 = VPAD + (h - 2*VPAD) - (principleData[j] - dataVals[0]) * yScale;
 

            if(j > 0)

            g2.draw(new Line2D.Double(x1, y1, x2, y2));

            x2 = x1;

            y2 = y1;

            x1 += xInc;
 

          g.setColor(Color.red);

          yy1 = VPAD + (h - 2*VPAD) - (interestData[j] - dataVals[0]) * yScale;

               if(j > 0)

            g2.draw(new Line2D.Double(xx1, yy1, xx2, yy2));

            xx2 = xx1;

            yy2 = yy1;

            xx1 += xInc;
 

        }

    }
 

    private int[] getDataVals()

    {

        int max = Integer.MIN_VALUE;

        int min = Integer.MAX_VALUE;

          int j = interestData.length -1;

          max = (int)principleData[j];

          min = (int)interestData[j];

        int span = max - min;

        return new int[] { min, max, span };

    }

}

Open in new window

0
Comment
Question by:pink16
  • 4
  • 4
  • 2
  • +1
12 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 24337438
You might have the numbers in the wrong order: you're calling parseInt on a double
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24337470
You need to call parseInt followed by parseDouble on the same line read that you split
0
 

Expert Comment

by:yoyo81
ID: 24337634
There is a problem with the logic here.

read line reads a line at a time. your logic think that readline reads a column at a time.

if you don't know the length of your file, you need to use a dynamically growing data structure to store the mortgages, or continually regrow your array (inefficient)
String[] line = b.readLine(  ).split(",");

                    trmArray = new int[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         trmArray[ i ] = Integer.parseInt(line[i].trim());

                    }

 

                    line = b.readLine(  ).split(",");

                    intrstArray = new double[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         intrstArray[ i ] = Double.parseDouble(line[i].trim());

                    }

Open in new window

0
 
LVL 1

Expert Comment

by:arrgon
ID: 24337784
for ( int i = 0; i < line.length; i++ )
                    {
                         trmArray[ i ] = Integer.parseInt(line[i].trim());
                    }
You can't call parseint on a decimal.  You need to change trmArray to a double array and rewrite your program in order to use it as a double array.  You'll need this line to be trmArray[i] = Double.parseDouble(line[i].trim());

Good luck
0
 

Author Comment

by:pink16
ID: 24339497
Ok I changed trmArray[i] = Double.parseDouble(line[i].trim());
and I can call the first rate and term, but I cant call the other two.
How can I call the external file to read the rows?
Like this
7,5.35
15,5.50
30,5.75
public void load()

     {

          Reader fis;

               try

               {
 

                    fis = new FileReader("data.txt");
 

                    BufferedReader b = new BufferedReader( fis );
 

                    String[] line = b.readLine(  ).split(",");

                    trmArray = new double[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         trmArray[ i ] = Double.parseDouble(line[i].trim());

                    }
 

                    line = b.readLine(  ).split(",");

                    intrstArray = new double[line.length];

                    for ( int i = 0; i < line.length; i++ )

                    {

                         intrstArray[ i ] = Double.parseDouble(line[i].trim());

                    }
 

               b.close();

               fis.close();

               }
 

               catch ( Exception e1 )

               {

                    e1.printStackTrace(  );

               }

     }

Open in new window

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 1

Expert Comment

by:arrgon
ID: 24339996
All of your code is a bit off.  I'm going to assume that you're only using those 3 lines with no plans to expand this.  If you plan to expand this, then you need to look at the arraylist class and learn about objects that are capable of expanding their size easier than an array. The proper way to do it would be:
try
               {
 
                    fis = new FileReader("data.txt");
 
                    BufferedReader b = new BufferedReader( fis );
                    String inputholder = "";
                    String termsandrates = "";
                    while ((inputholder = b.readLine()) != null)
                    {
                    termsandrates = termsandrates + inputholder;
                    }
                    String[] line = termsandrates.split(",");
                    trmArray = new double[3];
                    trmArray[0] = Double.parseDouble(line[0].trim());
                    trmArray[1] = Double.parseDouble(line[2].trim());
                    trmArray[2] = Double.parseDouble(line[4].trim());
                                   
                    intrstArray = new double[3];
                    intrstArray[0] = Double.parseDouble(line[1].trim());
                    intrstArray[1] = Double.parseDouble(line[3].trim());
                    intrstArray[2] = Double.parseDouble(line[5].trim());
                   
                 
 
               b.close();
               fis.close();
               }

This isn't the greatest way of coding, but it should fix your problem.
0
 

Author Comment

by:pink16
ID: 24340072
should I format the file a different way, I still get errors
java.lang.ArrayIndexOutOfBoundsException: 4
        at Mort6.load(Mort6.java:100)
        at Mort6.<init>(Mort6.java:73)
        at Mort6$1.run(Mort6.java:429)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

0
 
LVL 1

Expert Comment

by:arrgon
ID: 24340197
That was my fault, I left a step out.  Try this instead:
try
               {
 
                    fis = new FileReader("data.txt");
 
                    BufferedReader b = new BufferedReader( fis );
                    String inputholder = "";
                    String termsandrates = "";
                    while ((inputholder = b.readLine()) != null)
                    {
                    termsandrates = termsandrates + "," + inputholder;
                    }
                    String[] line = termsandrates.split(",");
                    trmArray = new double[3];
                    trmArray[0] = Double.parseDouble(line[0].trim());
                    trmArray[1] = Double.parseDouble(line[2].trim());
                    trmArray[2] = Double.parseDouble(line[4].trim());
                                   
                    intrstArray = new double[3];
                    intrstArray[0] = Double.parseDouble(line[1].trim());
                    intrstArray[1] = Double.parseDouble(line[3].trim());
                    intrstArray[2] = Double.parseDouble(line[5].trim());
                   
                 
 
               b.close();
               fis.close();
               }
0
 

Author Comment

by:pink16
ID: 24340332
By the way, thank you for all the help
fis = new FileReader("data.txt");

                    BufferedReader b = new BufferedReader( fis );
                    String inputholder = "";
                    String termsandrates = "";
                    while ((inputholder = b.readLine()) != null)
                    {
                    termsandrates = termsandrates + "," + inputholder;
                    }
                    String[] line = termsandrates.split(",");
                    trmArray = new double[3];
                    trmArray[0] = Double.parseDouble(line[0].trim());
                    trmArray[1] = Double.parseDouble(line[2].trim());
                    trmArray[2] = Double.parseDouble(line[4].trim());
                                   
                    intrstArray = new double[3];
                    intrstArray[0] = Double.parseDouble(line[1].trim());
                    intrstArray[1] = Double.parseDouble(line[3].trim());
                    intrstArray[2] = Double.parseDouble(line[5].trim());

               b.close();
               fis.close();
               }

I still get errors
java.lang.NumberFormatException: empty String
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:99
4)
        at java.lang.Double.parseDouble(Double.java:510)
        at Mort6.load(Mort6.java:98)
        at Mort6.<init>(Mort6.java:73)
        at Mort6$1.run(Mort6.java:428)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Mort6.setRate(Mort6.java:283)
        at Mort6.actionPerformed(Mort6.java:217)
        at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
        at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
        at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicCom
boPopup.java:816)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:2
73)
        at java.awt.Component.processMouseEvent(Component.java:6216)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicCombo
Popup.java:480)
        at java.awt.Component.processEvent(Component.java:5981)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4583)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
0
 
LVL 1

Accepted Solution

by:
arrgon earned 500 total points
ID: 24340433
                  Sorry I'm at a machine I can't compile on right now, so it's my fault again.  Let me know if this fixes it.  If not, I'll try it again later when i can actually compile to see if I'm screwing anything up. I flipped the code around and added a space into it causing the empty string error.  This will create 2 arrays. the first will have 7 in index 0, 15 in index 1, and 30 in index 2.  The second will have  5.35, 5.50, 5.75

BufferedReader b = new BufferedReader( fis );
                    String inputholder = "";
                    String termsandrates = "";
                    while ((inputholder = b.readLine()) != null)
                    {
                    termsandrates = termsandrates + inputholder + ",";
                    }
                    String[] line = termsandrates.split(",");
                    trmArray = new double[3];
                    trmArray[0] = Double.parseDouble(line[0].trim());
                    trmArray[1] = Double.parseDouble(line[2].trim());
                    trmArray[2] = Double.parseDouble(line[4].trim());
                                   
                    intrstArray = new double[3];
                    intrstArray[0] = Double.parseDouble(line[1].trim());
                    intrstArray[1] = Double.parseDouble(line[3].trim());
                    intrstArray[2] = Double.parseDouble(line[5].trim());
0
 

Author Comment

by:pink16
ID: 24340609
YOU RULE!!!! That did it, thanks for all your help!!! You made someone smile today.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

For customizing the look of your lightweight component and making it look opaque like it was made of plastic.  This tip assumes your component to be of rectangular shape and completely opaque.   (CODE)
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now