编程设计一个简单计算器 5

在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。... 在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。 展开
 我来答
piggy_zhao
2009-06-16
知道答主
回答量:45
采纳率:0%
帮助的人:19.5万
展开全部
JAVA

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CalculatorGUI {
// Buttons and a place to put them.
private Button key0, key1, key2, key3, key4;
private Button key5, key6, key7, key8, key9;
private Button keyequal, keyplus, keyminus;
private Button keyperiod, keymult, keydiv;
private Panel buttonArea;

// Where answer will be displayed.
private Label answer;

private int choice = 0;
private double num = 0.0;
private String str = "";
private double result;

public CalculatorGUI() {
answer = new Label("0.0",Label.RIGHT);

key0 = new Button("0");
key1 = new Button("1");
key2 = new Button("2");
key3 = new Button("3");
key4 = new Button("4");
key5 = new Button("5");
key6 = new Button("6");
key7 = new Button("7");
key8 = new Button("8");
key9 = new Button("9");
keyequal = new Button("=");
keyplus = new Button("+");
keyminus = new Button("-");
keymult = new Button("*");
keydiv = new Button("/");
keyperiod = new Button(".");
buttonArea = new Panel();
}

public void launchFrame() {
buttonArea.setLayout(new GridLayout(4,4));

buttonArea.add(key7);
buttonArea.add(key8);
buttonArea.add(key9);
buttonArea.add(keyplus);
buttonArea.add(key4);
buttonArea.add(key5);
buttonArea.add(key6);
buttonArea.add(keyminus);
buttonArea.add(key1);
buttonArea.add(key2);
buttonArea.add(key3);
buttonArea.add(keymult);
buttonArea.add(key0);
buttonArea.add(keyperiod);
buttonArea.add(keyequal);
buttonArea.add(keydiv);

result = Double.parseDouble(answer.getText());

key0.addActionListener(new ListenerNum());
key1.addActionListener(new ListenerNum());
key2.addActionListener(new ListenerNum());
key3.addActionListener(new ListenerNum());
key4.addActionListener(new ListenerNum());
key5.addActionListener(new ListenerNum());
key6.addActionListener(new ListenerNum());
key7.addActionListener(new ListenerNum());
key8.addActionListener(new ListenerNum());
key9.addActionListener(new ListenerNum());
keyperiod.addActionListener(new ListenerPeriod());
keyplus.addActionListener(new ListenerPlus());
keyminus.addActionListener(new ListenerMinus());
keymult.addActionListener(new ListenerMult());
keydiv.addActionListener(new ListenerDiv());
keyequal.addActionListener(new ListenerEqual());

// Create a Frame
Frame f = new Frame("Calculator");
f.setSize(200, 200);

f.add(answer, BorderLayout.NORTH);
f.add(buttonArea, BorderLayout.CENTER);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

f.setVisible (true);
}

public double opPlus(){
result = num + Double.parseDouble(answer.getText());
return result;
}

public double opMinus(){
result = num - Double.parseDouble(answer.getText());
return result;
}

public double opMult(){
result = num * Double.parseDouble(answer.getText());
return result;
}

public double opDiv(){
result = num / Double.parseDouble(answer.getText());
return result;
}

public static void main(String args[]) {
CalculatorGUI calcGUI = new CalculatorGUI();
calcGUI.launchFrame();
}

class ListenerNum implements ActionListener{
public void actionPerformed(ActionEvent e){
answer.setText(str);

if(answer.getText().equals("0"))
answer.setText(e.getActionCommand());
else
answer.setText(answer.getText() + e.getActionCommand());

str = answer.getText();

if(choice == 0){
num = Double.parseDouble(answer.getText());
}
}
}

class ListenerPeriod implements ActionListener{
public void actionPerformed(ActionEvent e){
if(answer.getText().contains(".") == false){
str = str + ".";
answer.setText(str);
str = answer.getText();
}
}
}

class ListenerPlus implements ActionListener{
public void actionPerformed(ActionEvent e){
str = "";
choice = 1;
num = Double.parseDouble(answer.getText());
}
}

class ListenerMinus implements ActionListener{
public void actionPerformed(ActionEvent e){
str = "";
choice = 2;
num = Double.parseDouble(answer.getText());
}
}

class ListenerMult implements ActionListener{
public void actionPerformed(ActionEvent e){
str = "";
choice = 3;
num = Double.parseDouble(answer.getText());
}
}

class ListenerDiv implements ActionListener{
public void actionPerformed(ActionEvent e){
str = "";
choice = 4;
num = Double.parseDouble(answer.getText());
}
}

class ListenerEqual implements ActionListener{
public void actionPerformed(ActionEvent e){
str = "";

switch(choice){
case 1:
answer.setText(String.valueOf(opPlus()));
break;
case 2:
answer.setText(String.valueOf(opMinus()));
break;
case 3:
answer.setText(String.valueOf(opMult()));
break;
case 4:
answer.setText(String.valueOf(opDiv()));
break;
}
}
}
}

很遗憾~~它不能连加~~
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d0a730732
2009-06-16 · TA获得超过3290个赞
知道小有建树答主
回答量:2630
采纳率:0%
帮助的人:1466万
展开全部
直接用WINDOWS的不就得了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友99f2f2f8a
2009-06-16 · TA获得超过399个赞
知道答主
回答量:192
采纳率:0%
帮助的人:0
展开全部
没时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式