java 计算器源代码_Java计算器源代码

我们上课的Java小程序,Java计算器,代码以验证正确性了哦!!

[code lang="java"]

import java.awt.*;

import java.applet.*;

public class counter 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("");

}

}

[/code]

这就是全部源代码啦!

[caption id="" align="aligncenter" width="238" caption="http://99it-upload.stor.sinaapp.com/javalogo.png"]

javalogo.png[/caption]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值