troubleshooting Question

Exception in thread "main"java.lang.NoSuchMethod Error: main

Avatar of Faye362
Faye362 asked on
Java
3 Comments1 Solution1254 ViewsLast Modified:
I need step by step help in determining this error: Exception in thread "main"java.lang.NoSuchMethod Error: main.

This is my code:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

public class MortCal_RRSv1 extends JFrame implements ActionListener {
     
     int term = 0;
     double principal = 0;
     double rate = 0;
     double monthlyPayment = 0;
     double interest = 0;
     
     
     String mTerm[] = {"7", "15", "30"};
     String mInterst[] = {"5.35%", "5.50%", "5.75%"};
     
     
     JPanel row1 = new JPanel();
     JLabel mortgage_label = new JLabel("SMITH MORTGAGE PAYMENT CALCULATOR", JLabel.CENTER);
     
     JPanel row2 = new JPanel(new GridLayout(1, 2));
     JLabel principal_label = new JLabel("Mortgage Principal $",JLabel.LEFT);
     JTextField principal_txt = new JTextField(10);
     
     JPanel row3 = new JPanel(new GridLayout(1, 2));
     JLabel term_label = new JLabel("Mortgage Term (Yrs)",JLabel.LEFT);
     JTextField term_txt = new JTextField(10);
     
     JPanel row4 = new JPanel(new GridLayout(1, 2));
     JLabel rate_label = new JLabel("Interest Rate (%)", JLabel.LEFT);
     JTextField rate_txt = new JTextField(10);
     
     JPanel radioPanel = new JPanel();
     JRadioButton button_A = new JRadioButton("7 Years at 5.35%" , false);
     JRadioButton button_B = new JRadioButton("15 Years at 5.50%" , false);
     JRadioButton button_C = new JRadioButton("30 Years at 5.75%", false);
     
     
     JPanel row5 = new JPanel(new GridLayout(1, 2));
     JLabel payment_label = new JLabel("Monthly Payment $", JLabel.LEFT);
     JTextField payment_txt = new JTextField(10);
     
     //***************create buttons***************
     JPanel button = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
     JButton clearButton = new JButton("Clear");
     JButton exitButton = new JButton("Exit");
     JButton calculateButton = new JButton("Calculate");
     
     
     //***************set textarea to diplay payments***************
     JTextArea displayArea = new JTextArea(10, 45);
     JScrollPane scroll = new JScrollPane(displayArea);
     
     
     public MortCal_RRSv1()
     {
          super ("Smith Mortgage Payment ");
          setSize(550, 500);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          Container pane = getContentPane();
         
          Border rowborder = new EmptyBorder( 3, 10, 3, 10 );
         
          pane.add(row1);
          row1.add(mortgage_label);
          row1.setMaximumSize( new Dimension( 10000, row1.getMinimumSize().height));
          row1.setBorder( rowborder);
         
          pane.add(row2);
          row2.add(principal_label);
          row2.add(principal_txt);
          row2.setMaximumSize( new Dimension( 10000, row2.getMinimumSize().height));
          row2.setBorder( rowborder);
         
          pane.add(row3);
          row3.add(term_label);
          row3.add(term_txt);  
          row3.setMaximumSize( new Dimension( 10000, row3.getMinimumSize().height));
          row3.setBorder( rowborder);
         
          pane.add(row4);
          row4.add(rate_label);
          row4.add(rate_txt);
          row4.setMaximumSize( new Dimension( 10000, row4.getMinimumSize().height));
          row4.setBorder( rowborder);
         
          ButtonGroup bgroup = new ButtonGroup();      
          bgroup.add(button_A);
          bgroup.add(button_B);
          bgroup.add(button_C);
         
          radioPanel.setLayout(new FlowLayout(FlowLayout.RIGHT, 4, 4 ));      
          radioPanel.add(button_A);
          radioPanel.add(button_B);
          radioPanel.add(button_C);
          pane.add(radioPanel);
          radioPanel.setMaximumSize( new Dimension( 10000, radioPanel.getMinimumSize().height));
          radioPanel.setBorder( rowborder);
         
          pane.add(row5);
          row5.add(payment_label);
          row5.add(payment_txt);
          payment_txt.setEnabled(false);                          //set payment amount uneditable
          row5.setMaximumSize( new Dimension( 10000, row5.getMinimumSize().height));
          row5.setBorder( rowborder);
         
          button.add(calculateButton);
          button.add(clearButton);
          button.add(exitButton);
          pane.add(button);
          button.setMaximumSize( new Dimension( 10000, button.getMinimumSize().height));
         
         
          scroll.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
          pane.add(scroll);  
         
          pane.setLayout(new BoxLayout( pane, BoxLayout.Y_AXIS));
          setVisible(true);
          setContentPane(pane);    
         
         
          //***************add listeners***************
          clearButton.addActionListener(this);
          exitButton.addActionListener(this);
          calculateButton.addActionListener(this);
          button_A.addActionListener(this);
          button_B.addActionListener(this);
          button_C.addActionListener(this);
         
     }
     public void actionPerformed(ActionEvent event){
         
          Object command = event.getSource();
         
if(command == calculateButton)
{
        try
        {
               principal = Double.parseDouble(principal_txt.getText());
        }
        catch(NumberFormatException e)
       {
     //catch null pointer exception if Principal is null
     JOptionPane.showMessageDialog(null, "Invaild Entry!  Please Try Again", "ERROR", JOptionPane.ERROR_MESSAGE);
       }
       try
       {
     term = Integer.parseInt(term_txt.getText());    // <-- even though .getText might through exception, it might mean the value is null and
                                                                                    // you should check whether the radio button is checked.
                rate = Double.parseDouble(rate_txt.getText());
        }
        catch(NumberFormatException e)
       {
               //**********Set rate and term based on which item in the combobox is selected**********
     if(button_A.isSelected() == true)
     {
                 rate = 5.35;
                 term = 7;
     }
     else if(button_B.isSelected() == true)
     {
                 rate = 5.5;
                 term = 15;
      }
     else if (button_C.isSelected() == true)
     {
                 rate = 5.75;
                 term = 30;
                 }
     else
     {
         //none of the button is checked, this is an actual error.  Throw an exception
                    JOptionPane.showMessageDialog(null, "Invaild Entry!  Please Try Again", "ERROR", JOptionPane.ERROR_MESSAGE);
      }
   
          if(command == clearButton)
          {
               principal_txt.setText(null);
               term_txt.setText(null);
               rate_txt.setText(null);
               payment_txt.setText(null);
               displayArea.setText(null);
          }
         
          if(command == exitButton)
          {
               System.exit(0);
     }
          }          
         
           //***************payment calculation*****************
       
         
        double principal = Double.parseDouble(principal_txt.getText());            //Principal amount
        float rate1 = Float.parseFloat((String)rate_txt.getText());  //Interest rate
        double rate = rate1/100;
        int term = Integer.parseInt((String)term_txt.getText());     //Length of Loan in Years
        double perMonthRate = rate/12;                                      //Monthly interst rate
        double termMonths = term*12;                                        //Number of months over which loan is amortized
       
       

        //*************calculation formula********************
       
        double monthlyPayment = principal * (perMonthRate/(1 - Math.pow((1 + perMonthRate),(-termMonths))));
       
        /*formatting variables*/
        DecimalFormat df = new DecimalFormat("\u00A4#,##0.00"); //currency
        DecimalFormat pf = new DecimalFormat("#,##0.00%");      //percentages
        DecimalFormat mi = new DecimalFormat("#,##0.000%");     //percentages
        payment_txt.setText("" + df.format(monthlyPayment));
       
        /*Amoritization variables*/
        double interestPaid = 0;                                /*Amount of interest paid on the loan*/
        double monthlyPrincipal = 0;                            /*Amount of principal in each monthly payment*/
        double principalBalance = principal;                    /*runing total of principal after payment*/
        int paymentNumber = 1;                                  //Variable used to set payment number.
       
       /*This loop increments the term length in years.*/
       for(int y = 1; y <= term; y++)
          {                                                       //start outer loop
            displayArea.append("");                                 //Inserts a blank line
           
           
           /*This loop is used to calculate and display the payment schedule
           information.*/
           for (int m = 0; m<12; m++)
            {    
      
  /*start inner loop*/
          }
            }
        interestPaid = principalBalance*perMonthRate;
                monthlyPrincipal = monthlyPayment-interestPaid;
                principalBalance = principalBalance - monthlyPrincipal;
                displayArea.append("Month "+paymentNumber+"\t\t"
                                       +df.format(monthlyPrincipal)+"\t\t"
                                       +df.format(interestPaid)+"\t\t"
                                       +df.format(principalBalance)+"\n");
                        paymentNumber++;
                        displayArea.setCaretPosition(0);    
             }            
                   }
      }
         }    
}
Join the community to see this answer!
Join our exclusive community to see this answer & millions of others.
Unlock 1 Answer and 3 Comments.
Join the Community
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros