-1

Here is my program: The language is obviously Java. Thank you for taking your time to help is you did. I greatly appreciate your services.

The code is used to create a calculator that shall have functions like squaring ,rooting , subtracting , adding , multiplying , dividing , and more if I feel like is necessary in the future.

This program is purely for personal use not for commercial use.

//04-11-15
//This program is a JFrame Calculator
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calc extends JFrame{
 public static void main(String[] acalc){
  Calc cal = new Calc();
 }
 public Calc(){
  super("Calculator");
  setSize(350,400);
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  setLocation(10,50);
  setResizable(false);
  Clanel z = new Clanel();
  setContentPane(z);
  setVisible(true);
  }
 }
 class Clanel extends JPanel{
  Bon bons;
  public Clanel(){
   setLayout(new BorderLayout());
   bons = new Bon();
   add(bons,BorderLayout.CENTER);
  }
  
 }

 
 class Bon extends JPanel{
   Disp dis = new Disp();
   Funk fun = new Funk();
   Numbers nus = new Numbers();
  public Bon(){
   setLayout(new BorderLayout());
   add(dis,BorderLayout.NORTH);
   add(fun,BorderLayout.EAST);
   add(nus,BorderLayout.CENTER);
  }

  
 
 class Funk extends JPanel implements ActionListener{
  private JButton plus;
  private JButton minus;
  private JButton multiply;
  private JButton divide;
  private JButton square;
  private JButton r;
  public Funk(){
   setLayout(new GridLayout(5,1));
   JButton plus = new JButton("+");
   plus.addActionListener(this);
   JButton minus = new JButton("-");
   minus.addActionListener(this);
   JButton divide = new JButton("/");
   divide.addActionListener(this);
   JButton square = new JButton("Square");
   square.addActionListener(this);
   JButton r = new JButton("Root");
   r.addActionListener(this);
   add(plus);
   add(minus);
   add(divide);
   add(square);
   add(r);
  }
  public void actionPerformed(ActionEvent e){
   if(e.getActionCommand().equals("+")){
    
   }

  }
  
 }
 class Numbers extends JPanel implements ActionListener{
  private JButton plus;
  private JButton minus;
  private JButton multiply;
  private JButton divide;
  private JButton square;
  private JButton r;
  private JLabel t;
  private String number=" ";
  public Numbers(){
   setLayout(new GridLayout(4,3));
   JButton plus = new JButton("0");
   plus.addActionListener(this);
   JButton minus = new JButton("1");
   minus.addActionListener(this);
   JButton divide = new JButton("2");
   divide.addActionListener(this);
   JButton square = new JButton("3");
   square.addActionListener(this);
   JButton r = new JButton("4");
   r.addActionListener(this);
   JButton fiv = new JButton("5");
   fiv.addActionListener(this);
   JButton si = new JButton("6");
   si.addActionListener(this);
   JButton se = new JButton("7");
   se.addActionListener(this);
   JButton ei = new JButton("8");
   ei.addActionListener(this);
   JButton ni = new JButton("9");
   ni.addActionListener(this);
   JButton clear = new JButton("Clear");
   clear.addActionListener(this);
   add(plus);
   add(minus);
   add(divide);
   add(square);
   add(r); 
   add(fiv); 
   add(si); 
   add(se); 
   add(ei); 
   add(ni);
   add(clear); 
 
  }
  public void actionPerformed(ActionEvent e){
   if(e.getActionCommand().equals("0")){
    number=number + "0";
   }
   if(e.getActionCommand().equals("Clear")){
    number="0";
   }
   if(e.getActionCommand().equals("1")){
    number=number+"1";
   }
   if(e.getActionCommand().equals("2")){
    number=number+"2";
   }
   if(e.getActionCommand().equals("3")){
    number=number+"3";
   }
   if(e.getActionCommand().equals("4")){
    number=number+"4";
   }
   if(e.getActionCommand().equals("5")){
    number=number+"5";
   }
   if(e.getActionCommand().equals("6")){
    number=number+"6";
   }
   if(e.getActionCommand().equals("7")){
    number=number+"7";
   }
   if(e.getActionCommand().equals("8")){
    number=number+"8";
   }
   if(e.getActionCommand().equals("9")){
    number=number+"9";   }
   
    
  }
 }
 class Disp extends JPanel implements ActionListener{
  private JLabel t;
  private String numb=nus.number;
  public Disp(){
   t = new JLabel(numb);
   add(t);
  }
  public void actionPerformed(ActionEvent e){
   
  }
  
 }
}

1 Answers1

1

nus has not been initialised when your Disp class tries to access it

The order that the fields are defined also defines the order in which they are initialised

// dis is been initialised BEFORE nus
Disp dis = new Disp();
Funk fun = new Funk();
Numbers nus = new Numbers();

If you change the order to something more like...

Numbers nus = new Numbers();
Disp dis = new Disp();
Funk fun = new Funk();

It should work.

You have to treat it like any normal variable initialisation, if variable A relies on something from variable B, B must be initialised before A

MadProgrammer
  • 343,457
  • 22
  • 230
  • 366