Ok - I'm at a loss - I keep fixing errors in this code and it just keeps generating more errors. Hope someone out there would be kind enough to take a look at it and maybe explain to me what I'm doing wrong. Please keep in mind - I'm a total beginner and I have to keep looking things up to understand what I'm doing. My code below is suppose to generate a calculator that will allow the user to input decimal numbers. THANKS IN ADVANCE !!
CODE
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.math.*;
public class Calculator extends JFrame implements ActionListener
{
private JTextField displayText = new JTextField(30);
private JButton[] button = new JButton[16];
private String[] keys = {"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", "C", "=", "+"};
private String numStr1 = "";
private String numStr2 = "";
private char op;
private boolean firstInput = true;
public String Calculator()
{
setTitle("My Calulator");
setSize(230, 200);
Container pane = getContentPane();
pane.setLayout(null);
displayText.setSize(200, 30);
displayText.setLocation(10, 10);
pane.add(displayText);
int x, y;
x = 10;
y = 40;
for (int ind = 0; ind < 16; ind++)
{
button[ind] = new JButton(keys[ind]);
button[ind].addActionListener(this);
button[ind].setSize(50, 30);
button[ind].setLocation(x, y);
pane.add(button[ind]);
x = x + 50;
if ((ind + 1) % 4 == 0)
{
x = 10;
y = y + 30;
}
}
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
String resultStr;
String str
= String.valueOf(e.getActionCommand());
char ch = str.charAt(0);
switch (ch)
{
case '0': case '1': case '2':
case '3': case '4': case '5':
case '6': case '7': case '8':
case '9': if (firstInput)
{
numStr1 = numStr1 + ch;
displayText.setText(numStr1);
}
else
{
numStr2 = numStr2 + ch;
displayText.setText(numStr2);
}
break;
case '+': case '-': case '*':
case '/': op = ch;
firstInput = false;
break;
case '=': resultStr = evaluate();
displayText.setText(resultStr);
numStr1 = resultStr;
numStr2 = "";
firstInput = false;
break;
case 'C': displayText.setText("");
numStr1 = "";
numStr2 = "";
firstInput = true;
}
}
private String evaluate()
{
final char beep = '\u0007';
try
{
int num1 = Double.parseDouble(num1Str1);
int num2 = Double.parseDouble(num1Str2);
int result = 0;
switch (op)
{
case '+': result = num1 + num2;
break;
case '-': result = num1 - num2;
break;
case '*': result = num1 * num2;
break;
case '/': result = num1 / num2;
}
return String.valueOf(result);
}
catch (ArithmeticException e)
{
System.out.print(beep);
return "E R R O R: " + e.getMessage();
}
catch (NumberFormatException e)
{
System.out.print(beep);
if (numStr1.equals(""))
return "E R R O R: Invalid First Number";
else
return "E R R O R: Invalid Second Number";
}
catch (Exception e)
{
System.out.print(beep);
return "E R R O R";
}
}
public static void main(String[] args)
{
Calculator c = new Calculator();
}
}
Here are the latest error messages I get when I try to compile:
java: 122: cannot resolve symbol
symbol : variable num1Str1
location: class Calculator
int num1 = Double.parseDouble(num1Str1);
java:122: possible loss of precision
found : double
required: int
int num1 = Double.parseDouble(num1Str1);
^
java:123: cannot resolve symbol
symbol : variable num1Str2
location: class A6ST3155687
int num2 = Double.parseDouble(num1Str2);
^
java:123: possible loss of precision
found : double
required: int
int num2 = Double.parseDouble(num1Str2);
^
java:160: cannot resolve symbol
symbol : class Calculator
location: class A6ST3155687
Calculator c = new Calculator();
^
java:160: cannot resolve symbol
symbol : class Calculator
location: class A6ST3155687
Calculator c = new Calculator();
^
6 errors
^
This post has been edited by MBAStudent: 25 Jun, 2008 - 08:30 AM