java编程中怎样实现一个计算器

输入数字是将按钮上的内容输入到结果文本框中及简单的加减乘除... 输入数字是将按钮上的内容输入到结果文本框中及简单的加减乘除 展开
 我来答
flyingFish211
推荐于2016-03-15 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
给你一个,前几天写的
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {
private JFrame f = new JFrame("Calculator");
private JPanel inputPanel = new JPanel();
private JPanel operationPanel = new JPanel();
private JPanel buttonsPanel = new JPanel();

private JTextField input = new JTextField(20);

private JButton backspace = new JButton("BackSpace");
private JButton CE = new JButton("CE ");
private JButton C = new JButton("C ");

private JButton add = new JButton("+");
private JButton sub = new JButton("-");
private JButton mul = new JButton("*");
private JButton div = new JButton("/");

private JButton decimal = new JButton(".");
private JButton equal = new JButton("=");

private JButton zero = new JButton("0");
private JButton one = new JButton("1");
private JButton two = new JButton("2");
private JButton three = new JButton("3");
private JButton four = new JButton("4");
private JButton five = new JButton("5");
private JButton six = new JButton("6");
private JButton seven = new JButton("7");
private JButton eight = new JButton("8");
private JButton nine = new JButton("9");

private String num1 = "";
private String operator = "";

public static void main(String[] args) {
new Calculator();
}

public Calculator(){
inputPanel.add(input);
f.add(inputPanel, BorderLayout.NORTH);

operationPanel.add(backspace);
operationPanel.add(CE);
operationPanel.add(C);
f.add(operationPanel, BorderLayout.CENTER);

buttonsPanel.add(add);
buttonsPanel.add(sub);
buttonsPanel.add(mul);
buttonsPanel.add(div);
buttonsPanel.add(one);
buttonsPanel.add(two);
buttonsPanel.add(three);
buttonsPanel.add(zero);
buttonsPanel.add(four);
buttonsPanel.add(five);
buttonsPanel.add(six);
buttonsPanel.add(decimal);
buttonsPanel.add(seven);
buttonsPanel.add(eight);
buttonsPanel.add(nine);
buttonsPanel.add(equal);
buttonsPanel.setLayout(new GridLayout(4, 4));
f.add(buttonsPanel, BorderLayout.SOUTH);

backspace.addMouseListener(new OperationMouseListener());
CE.addMouseListener(new OperationMouseListener());
C.addMouseListener(new OperationMouseListener());
decimal.addMouseListener(new OperationMouseListener());
equal.addMouseListener(new OperationMouseListener());

add.addMouseListener(new CalcMouseListener());
sub.addMouseListener(new CalcMouseListener());
mul.addMouseListener(new CalcMouseListener());
div.addMouseListener(new CalcMouseListener());

zero.addMouseListener(new NumberMouseListener());
one.addMouseListener(new NumberMouseListener());
two.addMouseListener(new NumberMouseListener());
three.addMouseListener(new NumberMouseListener());
four.addMouseListener(new NumberMouseListener());
five.addMouseListener(new NumberMouseListener());
six.addMouseListener(new NumberMouseListener());
seven.addMouseListener(new NumberMouseListener());
eight.addMouseListener(new NumberMouseListener());
nine.addMouseListener(new NumberMouseListener());

f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private class NumberMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {
if(input.getText().trim().equals("0")){
input.setText(((JButton)e.getSource()).getText().trim());
}else{
input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));
}
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

private class CalcMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {
num1 = input.getText().trim();input.setText("");
operator = ((JButton)e.getSource()).getText().trim();
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

private class OperationMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {
if(e.getSource() == backspace){
String inputText = input.getText();
if(inputText.length() > 0){
input.setText(inputText.substring(0, inputText.length() - 1));
}
}else if(e.getSource() == C){
input.setText("0");
num1 = "";
}else if(e.getSource() == CE){
input.setText("0");
}else if(e.getSource() == decimal){
String text = input.getText().trim();

if(text.indexOf(".") == -1){
input.setText(text.concat("."));
}
}else if(e.getSource() == equal){
if(!operator.trim().equals("")){
if(!input.getText().trim().equals("")){
double result = 0D;
if(operator.equals("+")){
result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());
}else if(operator.equals("-")){
result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());
}else if(operator.equals("*")){
result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());
}else if(operator.equals("/")){
result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());
}

input.setText(new DecimalFormat("#.00").format(result));
}
}

}

}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

}
364817153
2011-12-09 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:24.5万
展开全部
import java.awt.*;
import java.applet.*;

public class Calculator extends Applet{
TextField tfAnswer; //显示输入和结果的文本域
Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision; //运算符按钮
Button[] b=new Button[10]; //数字按钮

String currentOp,preOp; //当前操作和上一步操作
String foreText,backText; //当前输入和上一次输入
boolean isFloat = false; //运算类型标志

public void init() {
Panel panel1=new Panel(); //实例化面板
Panel panel2=new Panel();
Panel panel3=new Panel();

currentOp = new String(""); //实例化各组件
preOp = new String("");
foreText = new String("");
backText = new String("");
tfAnswer = new TextField(8);
setBackground(Color.lightGray); //设置Applet背景色
setForeground(Color.blue); //设置Applet前景色

for(int i=9;i>=0;i--){
b[i]=new Button(Integer.toString(i)); //实例化数字按钮
panel2.add(b[i]); //增加按钮到面板
}

bPoint = new Button("."); //实例化按钮
bEqual = new Button("=");
bEqual.setForeground(Color.red); //设置按钮前景色
bClear = new Button("清除");
bClear.setForeground(Color.red);
bDivision = new Button("/");
bDivision.setForeground(Color.red);
bMulti = new Button("*");
bMulti.setForeground(Color.red);
bMinus = new Button("-");
bMinus.setForeground(Color.red);
bPlus = new Button("+");
bPlus.setForeground(Color.red);

setLayout(new FlowLayout()); //设置布局管理器
panel1.setLayout(new FlowLayout());
panel2.setLayout(new GridLayout(4,3));
panel3.setLayout(new GridLayout(4,1));
panel1.add(tfAnswer); //增加组件到面板
panel1.add(bClear);
panel2.add(bPoint);
panel2.add(bEqual);
panel3.add(bPlus);
panel3.add(bMinus);
panel3.add(bMulti);
panel3.add(bDivision);
add(panel1); //增加组件到Applet
add(panel2);
add(panel3);
}

public boolean action(Event e, Object o) { //事件处理
String s = new String("");
for(int i=0;i<10;i++){
if(e.target==b[i]||e.target==bPoint){ //按钮事件来自于数字按钮和点按钮
if(e.target != bPoint) {
s = (String)o;
doForeText(s); //处理输入
}
if((e.target == bPoint)&&(!isFloat)){ //浮点数输入
isFloat = true; //设置运算标志
s = (String)o;
if(foreText.equals("")){
foreText += "0."; //增加小数点前面0
}
else{
doForeText(s);
}
}
}
}
if(e.target == bClear) {
doClear(); //清除输入
}
if((e.target == bMulti)||(e.target == bDivision)|| (e.target == bPlus)||(e.target == bMinus)) { //处理运算
if(foreText != ""){
currentOp = ((String)o);
doOperator(); //处理运算
}
else {
preOp = ((String)o);
}
}
if(e.target == bEqual) { //等于按钮事件处理
doOperator(); //处理运算
}
return true;
}

public void doOperator(){
double dFore,dBack;
Double d;

if(preOp.equals("")) {
backText = foreText;
foreText = "";
tfAnswer.setText(backText); //显示文本
}
else {
dFore = (new Double(foreText)).doubleValue(); //得到第一输入
dBack = (new Double(backText)).doubleValue(); //得到第二输入
foreText = "";
backText = tfAnswer.getText();

if(preOp.equals("+")) { //加运算处理
d = new Double((dBack + dFore)); //得到运算结果
tfAnswer.setText(d.toString()); //显示运算结果
backText = d.toString();
}
if(preOp.equals("-")) {
d = new Double((dBack - dFore));//得到运算结果
tfAnswer.setText(d.toString()); //显示运算结果
backText = d.toString();
}
if(preOp.equals("*")) {
d = new Double((dBack * dFore));//得到运算结果
tfAnswer.setText(d.toString());//显示运算结果
backText = d.toString();
}
if(preOp.equals("/")) {
if (dFore==0){
tfAnswer.setText("除数不能为0"); //显示出错信息
return;
}
d = new Double((dBack / dFore));//得到运算结果
tfAnswer.setText(d.toString());//显示运算结果
backText = d.toString();
}
}
//Math.sin();
preOp = currentOp;
}

public void doForeText(String s) {
foreText += s;
tfAnswer.setText(foreText); //显示输入
}

public void doBackText(String s){
backText = foreText;
foreText = "";
tfAnswer.setText(foreText); //显示输入
}

public void doClear() { //清除输入
currentOp = "";
preOp = "";
foreText = "";
backText = "";
isFloat = false;
tfAnswer.setText("");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoxlll
2011-12-22
知道答主
回答量:11
采纳率:0%
帮助的人:7.3万
展开全部
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Calculator extends Applet {
TextField one=new TextField(5);
TextField two=new TextField(5);
TextField result=new TextField(10);
Label la1=new Label("first data:");
Label la2=new Label("second data:");
Label la3=new Label("equal:");
Button plus=new Button("+");
Button minus=new Button("-");
Button times=new Button("*");
Button divided=new Button("/");
Button clear=new Button("clear");
Panel p1=new Panel(new FlowLayout());
Panel p2=new Panel(new FlowLayout());
Panel p3=new Panel(new FlowLayout());

public void init(){
this.setLayout(new BorderLayout());
p1.add(la1);
p1.add(one);
p1.add(la2);
p1.add(two);
this.add(p1,"North");
p2.add(la3);
p2.add(result);
this.add(p2,"Center");
p3.add(plus);
p3.add(minus);
p3.add(times);
p3.add(divided);
p3.add(clear);
this.add(p3,"South");
plus.addActionListener(new plusL());
minus.addActionListener(new minusL());
times.addActionListener(new timesL());
divided.addActionListener(new dividedL());
clear.addActionListener(new clearL());
}
class plusL implements ActionListener{
public void actionPerformed(ActionEvent e){
int i;
Integer j=new Integer(one.getText());
Integer k=new Integer(two.getText());
i=j.intValue()+k.intValue();
result.setText(j.toString(i));
}
}
class minusL implements ActionListener{
public void actionPerformed(ActionEvent e){
int i;
Integer j=new Integer(one.getText());
Integer k=new Integer(two.getText());
if(j.intValue()>=k.intValue()){
i=j.intValue()-k.intValue();
result.setText(j.toString(i));
}
else{
i=k.intValue()-j.intValue();
result.setText("-"+j.toString(i));
}
}
}
class timesL implements ActionListener{
public void actionPerformed(ActionEvent e){
int i;
Integer j=new Integer(one.getText());
Integer k=new Integer(two.getText());
i=j.intValue()*k.intValue();
result.setText(j.toString(i));
}
}
class dividedL implements ActionListener{
public void actionPerformed(ActionEvent e){
int i;
Integer j=new Integer(one.getText());
Integer k=new Integer(two.getText());
try{
i=j.intValue()/k.intValue();
result.setText(j.toString(i));
}
catch(ArithmeticException ee){
result.setText("divided by zero");
}
}
}
class clearL implements ActionListener{
public void actionPerformed(ActionEvent e){
one.setText(null);
two.setText(null);
result.setText(null);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式