一个Java实现的计算器小程序[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.length;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();
}
}
以上是“一个Java实现的计算器小程序[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |