| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 540 人关注过本帖
标题:帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q
只看楼主 加入收藏
z12010243008
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-3
结帖率:0
收藏
已结贴  问题点数:5 回复次数:1 
帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q
import java.awt.*;
import java.awt.event.*;
public class Calculator extends WindowAdapter implements ActionListener{
private double result=0,data1=0,radixPointDepth=1;
private boolean radixPointIndicate=false,resultIndicate=false;
private char prec='+';
private Frame f;
private TextField tf;
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20;
private Panel p;
private String lastCommand;// 保存+,-,*,/,=命令
private boolean start;// 判断是否为数字的开始

static public void main(String args[]){
Calculator de=new Calculator();
de.go();
}
public void go(){f=new Frame();
p=new Panel();
p.setLayout(new GridLayout(5,4));
tf=new TextField(30);
b1=new Button("BackSpace");
b2=new Button("C");
b3=new Button("CE");
b4=new Button("+/-");
b5=new Button("7");
b6=new Button("8");
b7=new Button("9");
b8=new Button("+");
b9=new Button("4");
b10=new Button("5");
b11=new Button("6");
b12=new Button("-");
b13=new Button("1");
b14=new Button("2");
b15=new Button("3");
b16=new Button("*");
b17=new Button("0");
b18=new Button(".");
b19=new Button("=");
b20=new Button("/");
f.add(tf,"North");
f.add(p,"Center");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
p.add(b17);
p.add(b18);
p.add(b19);
p.add(b20);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this);
b20.addActionListener(this);

f.addWindowListener(this);
f.setSize(300,200);
f.setVisible(true);
}


public void actionPerformed(ActionEvent e){
String s;
s=e.getActionCommand();



if (start) {
tf.setText("");
start = false;
if (s.equals("+/-"))
tf.setText(tf.getText() + "-");
}

if (!s.equals("+/-")) {
     if (s.equals("Backspace")) {
         String str = tf.getText();
if (str.length() > 0)
    tf.setText(str.substring(0, str.length() - 1));
} else if (s.equals("CE") || s.equals("C")) {
tf.setText("0");
start = true;
} else
tf.setText(tf.getText() + s);
}



switch(s.charAt(0)){
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
if(resultIndicate){
result=0;
data1=0;
}
Integer Int1=new Integer(s);
if(radixPointIndicate){
radixPointDepth=radixPointDepth/10;
data1=data1+(Int1.intValue())*radixPointDepth;
}
else{
data1=data1*10+(Int1.intValue());
}
Double displayNumber=new Double(data1);
tf.setText(displayNumber.toString());
resultIndicate=false;
break;
case '+': case '-':case '*':case '/':case '=':
if(s.charAt(0)!='='&&resultIndicate){
prec=s.charAt(0);
resultIndicate=false;
}
else{
switch(prec){
case '+':
result=result+data1;
break;
case '-':
result=result-data1;
break;
case '*':
result=result*data1;
break;
case '/':
result=result/data1;
break;
}
}
radixPointIndicate=false;
radixPointDepth=1;
displayNumber=new Double(result);
tf.setText(displayNumber.toString());
if(s.charAt(0)!='='){
data1=0;
prec=s.charAt(0);
}
else{
resultIndicate=true;
}
break;
case '.':
radixPointIndicate=true;
break;
}
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
搜索更多相关主题的帖子: 计算器 private public import 
2012-05-07 11:24
freegod
Rank: 2
等 级:论坛游民
帖 子:33
专家分:73
注 册:2010-4-12
收藏
得分:5 
问题在这几句:
程序代码:
if (!s.equals("+/-")) {
     if (s.equals("BackSpace")) { //BackSpace写成Backspace了,错了
         String str = tf.getText();
         if (str.length() > 0)
         {
             tf.setText(str.substring(0, str.length() - 1));
             //data1    关于如何修改data1的问题,lz自己解决
             //result   同上
         }
     } else if (s.equals("CE") || s.equals("C")) {
         tf.setText("0");
         data1=0;//清除原有记录,这个比较简单,上面的BackSpace就有点麻烦了
         result=0;//
         start = true;
     } else
         tf.setText(tf.getText() + s);
} 
2012-05-07 14:59
快速回复:帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017099 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved