java小程序计算器,一个Java实现的计算器小程序[Java编程]

/**

@author Song Liang Peng

@version 2005.7.23

*/

import java.awt.*;

import java.awt.event.*;

public class Counter extends Frame implements ActionListener

{

TextField t=new TextField("",15);

Panel p1=new Panel();

Panel p2=new Panel();

Button[] b=new Button[10];

Button bAdd=new Button("+");

Button bSub=new Button("-");

Button bMul=new Button("*");

Button bDiv=new Button("/");

Button bPoint=new Button(".");

Button bEqual=new Button("=");

Button bSqrt=new Button("开平方");

Button bNull=new Button("清空");

String str1="";   //str1和str2存放两个输入的数

String str2="";

String operator=null;  //存放加减乘除以及开平方的标记

boolean first=true;  //查验输入的能否为第一个数

int countOper=0;  //累计输入标记的个数,连加连减等操作中会用到

double result=0.0;  //暂存后果

double num1=0.0,num2=0.0; //两个输入的数做运算时转化为double存放

boolean error=false;  //查验除数能否为0

//构造办法

public Counter()

{

super("counter");

t.setEditable(false);

for(int i=0;i

{

b[i]=new Button(String.valueOf(i));

p1.add(b[i]);

b[i].setActionCommand("number");

b[i].addActionListener(this);

}

p1.add(bPoint);

bPoint.setActionCommand("number");

p1.add(bAdd);   //数字键,标记键安排在panel的p1中

p1.add(bSub);

p1.add(bMul);

p1.add(bDiv);

p1.add(bEqual);

p2.add(bSqrt);   //开平方和清空键安排在panel的p2中

p2.add(bNull);

bAdd.setActionCommand("oper");

bSub.setActionCommand("oper");

bMul.setActionCommand("oper");

bDiv.setActionCommand("oper");

bAdd.addActionListener(this);

bSub.addActionListener(this);

bMul.addActionListener(this);

bDiv.addActionListener(this);

bPoint.addActionListener(this);

bEqual.addActionListener(this);

bSqrt.addActionListener(this);

bNull.addActionListener(this);

p1.setLayout(new GridLayout(4,4,5,5));

p2.setLayout(new FlowLayout());

add(t,"North");   //frame的north安排输入框,panel安排在center和south

add(p1,"Center");

add(p2,"South");

setLocation(400,200);

setSize(200,200);

setBackground(Color.red);

setVisible(true);

addWindowListener(new WindowAdapter(){  //关闭窗口

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

//实现接口ActionListener

public void actionPerformed(ActionEvent e)

{

Button temp=(Button)e.getSource();

if(e.getActionCommand().equals("number"))

{

if(first)

{

str1=str1+temp.getLabel();

t.setText(str1);

}

else

{

str2=str2+temp.getLabel();

t.setText(str2);

}

}

else if(e.getActionCommand().equals("oper"))

{

if(str1=="")  //假如还没有输入数就点击运算符履行if,127行同理

{

countOper=0;

first=true;

}

else

{

countOper++;

if(countOper>1)

{

getResult();

}

operator=temp.getLabel();

first=false;

}

}

else if(e.getActionCommand().equals("开平方"))

{

if(str1=="")

{

countOper=0;

first=true;

}

else

{

countOper=1;

if(countOper>1)

{

getResult();

}

double d=Math.sqrt(Double.parseDouble(str1));

str1=String.valueOf(d);

t.setText(String.valueOf(d));

first=false;

}

}

else if(e.getActionCommand().equals("清空"))

{

str1="";

str2="";

t.setText("");

countOper=0;

first=true;

error=false;

}

else if(e.getActionCommand().equals("="))

{

if((str1=="")||(str2==""))  //两个数没有输全就点击等号,履行if

{

countOper=0;

first=true;

}

else

{

getResult();

countOper=0;

}

}

}

//运算后果的办法

public void getResult()

{

num1=Double.parseDouble(str1);

num2=Double.parseDouble(str2);

if(operator.equals("+"))

{

result=num1+num2;

}

else if(operator.equals("-"))

{

result=num1-num2;

}

else if(operator.equals("*"))

{

result=num1*num2;

}

else if(operator.equals("/"))

{

if(num2==0.0)  //除数为0的处理办法

{

error=true;

}

else

{

result=num1/num2;

}

}

if(error)

{

t.setText("error");

}

else

{

t.setText(String.valueOf(result));

str1=String.valueOf(result); //运算后把后果放入str1中,str2清空,为连加连减等操作做预备

str2="";

}

}

//主办法

public static void main(String[] args)

{

new Counter();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值