B
bilsch
A stripped down version of my program is in the 2 files copied below.
It is a simple calculator like in Windows accessories. The example only
does addition and subtraction but it doesn't work. A number is
accumulated in the textbox and when '+' button is clicked the displayed
string is converted to double, the displayed string remains until the
first digit of the next number is entered then the first number is
cleared and the second number begins. When '=' is clicked the second
displayed string (number) is converted to double and added to the first
double number. The operation is controlled by 'opFlag' and 'addFlag'
settings. The problem apparently is that the 'if' statements that set
the flags are not being executed. I tried NetBeans debugger to watch
the values but I don't know how to use the debugger well enough. I'm
hoping someone here can tell me what I'm doing wrong so I can move on.
Your comments will be appreciated. TIA Bill S.
THE GUI FILE:
import java.awt.*;
import javax.swing.*;
public class CalcGUIQ2 extends JFrame {
CrunchQ2 crunchNu = new CrunchQ2(this);
// set up row 1
JPanel row1 = new JPanel();
JTextField number1 = new JTextField(30);
// set up row 2
JPanel row2 = new JPanel();
JButton sev = new JButton("7");
JButton ate = new JButton("8");
JButton nin = new JButton("9");
JButton fou = new JButton("4");
JButton fiv = new JButton("5");
JButton six = new JButton("6");
JButton one = new JButton("1");
JButton two = new JButton("2");
JButton tre = new JButton("3");
JButton add = new JButton("+");
JButton sub = new JButton("--");
JButton zro = new JButton("0");
JButton dot = new JButton(".");
JButton equ = new JButton("=");
public CalcGUIQ2() {
super();
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(2, 1, 10, 10);
setLayout(layout);
//add listeners
dot.addActionListener(crunchNu);
zro.addActionListener(crunchNu);
one.addActionListener(crunchNu);
two.addActionListener(crunchNu);
tre.addActionListener(crunchNu);
fou.addActionListener(crunchNu);
fiv.addActionListener(crunchNu);
six.addActionListener(crunchNu);
sev.addActionListener(crunchNu);
ate.addActionListener(crunchNu);
nin.addActionListener(crunchNu);
equ.addActionListener(crunchNu);
add.addActionListener(crunchNu);
sub.addActionListener(crunchNu);
FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
row1.add(number1);
row1.setLayout(layout1);
add(row1);
GridLayout layout2 = new GridLayout(5, 3, 10, 10);
row2.setLayout(layout2);
row2.add (sev);
row2.add (ate);
row2.add (nin);
row2.add (fou);
row2.add (fiv);
row2.add (six);
row2.add (one);
row2.add (two);
row2.add (tre);
row2.add (zro);
row2.add (dot);
row2.add (equ);
row2.add (add);
row2.add (sub);
add(row2);
pack();
setVisible(true);
}
public static void main(String[] arguments) {
CalcGUIQ2 frame = new CalcGUIQ2();
}
}
THE CALCULATION FILE:
import javax.swing.*;
import java.awt.event.*;
public class CrunchQ2 implements ActionListener{
CalcGUIQ2 gui;
String strng1 = "";
String noChar = "";
String nine = "999999999";
boolean addFlag = false;
boolean subFlag = false;
boolean opFlag = false;
Double operand1 = 0.0;
Double operand2 = 0.0;
public CrunchQ2(CalcGUIQ2 in) {
gui = in;
}
public void actionPerformed(ActionEvent event){
String btn = event.getActionCommand();
// opflag clears display
if (opFlag = true){
gui.number1.setText(noChar);
opFlag = false;
}
if (btn == "=") {
operand2=Double.parseDouble(strng1);
if (addFlag = true) {
operand1 += operand2;
addFlag = false;
}
if (subFlag = true) {
operand1 -= operand2;
subFlag = false;
}
}
if (btn == ".") {strng1 += btn;}
else if (btn == "0") {strng1 += btn;}
else if (btn == "1") {strng1 += btn;}
else if (btn == "2") {strng1 += btn;}
else if (btn == "3") {strng1 += btn;}
else if (btn == "4") {strng1 += btn;}
else if (btn == "5") {strng1 += btn;}
else if (btn == "6") {strng1 += btn;}
else if (btn == "7") {strng1 += btn;}
else if (btn == "8") {strng1 += btn;}
else if (btn == "9") {strng1 += btn;}
gui.number1.setText(strng1);
if (btn == "+") {
addFlag = true;
opFlag = true;
operand1=Double.parseDouble(strng1);}
if (btn == "--") {
subFlag = true;
opFlag = true;
operand1=Double.parseDouble(strng1);}
}
}
It is a simple calculator like in Windows accessories. The example only
does addition and subtraction but it doesn't work. A number is
accumulated in the textbox and when '+' button is clicked the displayed
string is converted to double, the displayed string remains until the
first digit of the next number is entered then the first number is
cleared and the second number begins. When '=' is clicked the second
displayed string (number) is converted to double and added to the first
double number. The operation is controlled by 'opFlag' and 'addFlag'
settings. The problem apparently is that the 'if' statements that set
the flags are not being executed. I tried NetBeans debugger to watch
the values but I don't know how to use the debugger well enough. I'm
hoping someone here can tell me what I'm doing wrong so I can move on.
Your comments will be appreciated. TIA Bill S.
THE GUI FILE:
import java.awt.*;
import javax.swing.*;
public class CalcGUIQ2 extends JFrame {
CrunchQ2 crunchNu = new CrunchQ2(this);
// set up row 1
JPanel row1 = new JPanel();
JTextField number1 = new JTextField(30);
// set up row 2
JPanel row2 = new JPanel();
JButton sev = new JButton("7");
JButton ate = new JButton("8");
JButton nin = new JButton("9");
JButton fou = new JButton("4");
JButton fiv = new JButton("5");
JButton six = new JButton("6");
JButton one = new JButton("1");
JButton two = new JButton("2");
JButton tre = new JButton("3");
JButton add = new JButton("+");
JButton sub = new JButton("--");
JButton zro = new JButton("0");
JButton dot = new JButton(".");
JButton equ = new JButton("=");
public CalcGUIQ2() {
super();
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(2, 1, 10, 10);
setLayout(layout);
//add listeners
dot.addActionListener(crunchNu);
zro.addActionListener(crunchNu);
one.addActionListener(crunchNu);
two.addActionListener(crunchNu);
tre.addActionListener(crunchNu);
fou.addActionListener(crunchNu);
fiv.addActionListener(crunchNu);
six.addActionListener(crunchNu);
sev.addActionListener(crunchNu);
ate.addActionListener(crunchNu);
nin.addActionListener(crunchNu);
equ.addActionListener(crunchNu);
add.addActionListener(crunchNu);
sub.addActionListener(crunchNu);
FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
row1.add(number1);
row1.setLayout(layout1);
add(row1);
GridLayout layout2 = new GridLayout(5, 3, 10, 10);
row2.setLayout(layout2);
row2.add (sev);
row2.add (ate);
row2.add (nin);
row2.add (fou);
row2.add (fiv);
row2.add (six);
row2.add (one);
row2.add (two);
row2.add (tre);
row2.add (zro);
row2.add (dot);
row2.add (equ);
row2.add (add);
row2.add (sub);
add(row2);
pack();
setVisible(true);
}
public static void main(String[] arguments) {
CalcGUIQ2 frame = new CalcGUIQ2();
}
}
THE CALCULATION FILE:
import javax.swing.*;
import java.awt.event.*;
public class CrunchQ2 implements ActionListener{
CalcGUIQ2 gui;
String strng1 = "";
String noChar = "";
String nine = "999999999";
boolean addFlag = false;
boolean subFlag = false;
boolean opFlag = false;
Double operand1 = 0.0;
Double operand2 = 0.0;
public CrunchQ2(CalcGUIQ2 in) {
gui = in;
}
public void actionPerformed(ActionEvent event){
String btn = event.getActionCommand();
// opflag clears display
if (opFlag = true){
gui.number1.setText(noChar);
opFlag = false;
}
if (btn == "=") {
operand2=Double.parseDouble(strng1);
if (addFlag = true) {
operand1 += operand2;
addFlag = false;
}
if (subFlag = true) {
operand1 -= operand2;
subFlag = false;
}
}
if (btn == ".") {strng1 += btn;}
else if (btn == "0") {strng1 += btn;}
else if (btn == "1") {strng1 += btn;}
else if (btn == "2") {strng1 += btn;}
else if (btn == "3") {strng1 += btn;}
else if (btn == "4") {strng1 += btn;}
else if (btn == "5") {strng1 += btn;}
else if (btn == "6") {strng1 += btn;}
else if (btn == "7") {strng1 += btn;}
else if (btn == "8") {strng1 += btn;}
else if (btn == "9") {strng1 += btn;}
gui.number1.setText(strng1);
if (btn == "+") {
addFlag = true;
opFlag = true;
operand1=Double.parseDouble(strng1);}
if (btn == "--") {
subFlag = true;
opFlag = true;
operand1=Double.parseDouble(strng1);}
}
}