程序如下:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
class Calculator extends Frame implements ActionListener {
private boolean operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private Panel pan;
private TextField operation; //计算结果显示栏
private Button plus, minus,multi,div,equal,clear; // 运算符
private Button[] numbers;
//构造方法
public Calculator(){
// 初始化变量
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
setLayout(null);
setTitle("Calculator");
operation = new TextField("0");
operation.setBounds(20,40,200,20);
operation.setEditable(false);
numbers = new Button[10];
for (int i = 0; i < 10; i++)
numbers[i] = new Button("" + i);
plus = new Button("+");
minus = new Button("-");
multi = new Button("*");
div = new Button("/");
equal = new Button("=");
clear = new Button("AC");
pan= new Panel();
// 将物体放入窗口
add(operation);
pan.setLayout(new GridLayout(4,4));
pan.setBounds(20,80,200,100);
add(pan);
for (int i=7;i<10;++i)
pan.add(numbers[i]);
pan.add(plus);
for (int i=4;i<7;++i)
pan.add(numbers[i]);
pan.add(minus);
for (int i=1;i<4;++i)
pan.add(numbers[i]);
pan.add(multi);
pan.add(numbers[0]);
pan.add(clear);
pan.add(equal);
pan.add(div);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e){
Button btn = (Button)e.getSource();
if(btn == clear){
operation.setText("0");
storedNumber = 0;
lastOperator = '?';
}
else if (btn == equal){
operate('=');
equaled = true;
}
else if (btn == plus){
operate('+');
equaled = false;
}
else if (btn == minus){
operate('-');
equaled = false;
}
else if (btn == multi){
operate('*');
equaled = false;
}
else if (btn == div){
operate('/');
equaled = false;
}
else{
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i]){
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(!operated)
operation.setText(operation.getText() + i);
else{
operation.setText("" + i);
operated = false;
}
} }
}
// 进行运算的方法
private void operate(char operator){
double currentNumber = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
operation.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}
public static void main(String[] args){ // 主方法初始化并显示窗口
Calculator calculator = new Calculator();
calculator.setSize(250,200);
calculator.setVisible(true);
}
}
import java.util.*;
import java.awt.*;
import java.awt.event.*;
class Calculator extends Frame implements ActionListener {
private boolean operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private Panel pan;
private TextField operation; //计算结果显示栏
private Button plus, minus,multi,div,equal,clear; // 运算符
private Button[] numbers;
//构造方法
public Calculator(){
// 初始化变量
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
setLayout(null);
setTitle("Calculator");
operation = new TextField("0");
operation.setBounds(20,40,200,20);
operation.setEditable(false);
numbers = new Button[10];
for (int i = 0; i < 10; i++)
numbers[i] = new Button("" + i);
plus = new Button("+");
minus = new Button("-");
multi = new Button("*");
div = new Button("/");
equal = new Button("=");
clear = new Button("AC");
pan= new Panel();
// 将物体放入窗口
add(operation);
pan.setLayout(new GridLayout(4,4));
pan.setBounds(20,80,200,100);
add(pan);
for (int i=7;i<10;++i)
pan.add(numbers[i]);
pan.add(plus);
for (int i=4;i<7;++i)
pan.add(numbers[i]);
pan.add(minus);
for (int i=1;i<4;++i)
pan.add(numbers[i]);
pan.add(multi);
pan.add(numbers[0]);
pan.add(clear);
pan.add(equal);
pan.add(div);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e){
Button btn = (Button)e.getSource();
if(btn == clear){
operation.setText("0");
storedNumber = 0;
lastOperator = '?';
}
else if (btn == equal){
operate('=');
equaled = true;
}
else if (btn == plus){
operate('+');
equaled = false;
}
else if (btn == minus){
operate('-');
equaled = false;
}
else if (btn == multi){
operate('*');
equaled = false;
}
else if (btn == div){
operate('/');
equaled = false;
}
else{
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i]){
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(!operated)
operation.setText(operation.getText() + i);
else{
operation.setText("" + i);
operated = false;
}
} }
}
// 进行运算的方法
private void operate(char operator){
double currentNumber = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
operation.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}
public static void main(String[] args){ // 主方法初始化并显示窗口
Calculator calculator = new Calculator();
calculator.setSize(250,200);
calculator.setVisible(true);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货