ITPUB??ì3
ITPUB论坛 » Java入门与认证版 » 请各位帮帮忙看看自己编写的一个计算器的JAVA小程序

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 请各位帮帮忙看看自己编写的一个计算器的JAVA小程序
离线 handuner
初级会员



精华贴数 0
个人空间 0
技术积分 3574 (411)
社区积分 0 (1442371)
注册日期 2007-6-21
论坛徽章:21
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-5-29 07:41 
请各位帮帮忙看看自己编写的一个计算器的JAVA小程序

package whh;
import java.awt.*;
import java.awt.event.*;

class EventTest extends Frame implements ActionListener,ItemListener
{
Button btn1[]=new Button[16];
Button btn2[]=new Button[16];
TextField text;
String a1="",a2="",b1="",b2="",b3="",x;
CheckboxGroup cbg=new CheckboxGroup();
Checkbox c1,c2,c3;
EventTest()
    {
    setTitle("计算器");
    setLayout(null);
    setSize(500,250);
    setLocation(400,200);
this.setResizable(false);
    text=new TextField("0",6);
    text.setEditable(false);
Panel pnl=new Panel(new GridLayout(4,4,7,7));
Panel pnl2=new Panel(new GridLayout(1,4,7,7));
Panel pnl3=new Panel(new GridLayout(1,4,7,7));
Panel pnl4=new Panel(new GridLayout(1,4,7,7));
Panel pnl5=new Panel(new GridLayout(1,4,7,7));
Panel pnl6=new Panel(new GridLayout(4,4,7,7));
for(int i=0;i <=9;i++)
{
btn1=new Button(String.valueOf(i));
}
   
btn1[10]=new Button("+");
        btn1[10].setForeground(Color.red);
btn1[11]=new Button("-");
btn1[11].setForeground(Color.red);
btn1[12]=new Button("*");
btn1[12].setForeground(Color.red);
btn1[13]=new Button("/");
btn1[13].setForeground(Color.red);
btn1[14]=new Button("C");
btn1[14].setForeground(Color.red);
btn1[15]=new Button("=");
btn1[15].setForeground(Color.red);
btn2[0]=new Button("Sin");
btn2[1]=new Button("And");
btn2[2]=new Button("(");
btn2[3]=new Button(")");
btn2[4]=new Button("Cos");
btn2[5]=new Button("Or");
btn2[6]=new Button("Exp");
btn2[7]=new Button("Ln");
btn2[8]=new Button("Tan");
btn2[9]=new Button("Xo");
btn2[10]=new Button("x*y");
btn2[11]=new Button("Log");
btn2[12]=new Button("e");
btn2[13]=new Button("Not");
btn2[14]=new Button("x*3");
btn2[15]=new Button("n!");
for(int i=0;i <=15;i++)
{
btn2.disable();
}

c1=new Checkbox("十进制",cbg,true);
c2=new Checkbox("八进制",cbg,false);
    c3=new Checkbox("二进制",cbg,false);
this.setLayout(null);
pnl.setBounds(260,90,240,160);
pnl2.setBounds(0, 70, 240, 20);
pnl3.setBounds(260, 70, 240, 20);
pnl4.setBounds(0, 30, 500, 20);
pnl5.setBounds(50, 50, 400, 20);
pnl6.setBounds(0,90,240,160);
   
for (int i=0;i <=15;i++)
{
pnl.add(btn1);
}

pnl2.add(c1);
pnl2.add(c2);
pnl2.add(c3);
pnl3.add(new Checkbox("Inv"));
pnl3.add(new Checkbox("Hyp"));
pnl5.add(text);
        for(int i=0;i <=15;i++)
        {
        pnl6.add(btn2);
        }

this.add(pnl);
this.add(pnl2);
this.add(pnl3);
this.add(pnl4);
this.add(pnl5);
this.add(pnl6);

for(int i=0;i <=15;i++)
{
btn1.addActionListener(this);// 注册监听器
}

c1.addItemListener(this);
c2.addItemListener(this);
c3.addItemListener(this);
      
    //关闭窗口
    addWindowListener(new WindowAdapter()
    {
public void windowClosing(WindowEvent e)
{
      System.exit(0);      
      }
});
    setVisible(true);
    }
public void itemStateChanged(ItemEvent e)
{
if(c1.getState()==true)         
{
for(int i=0;i <=9;i++)
{
btn1.enable();
}
}
if(c2.getState()==true)         
{
btn1[8].disable();
btn1[9].disable();
}
if(c3.getState()==true)         
{
for(int i=2;i <=9;i++)
{
btn1.disable();
}
}
}
   
    public void actionPerformed(ActionEvent e)
    {
        //取得事件源对象
        Button btn=(Button) e.getSource();
        
        if(btn==btn1[0])  // 如果是按下btn1按钮  
      {
        a1=btn1[0].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
        if(btn==btn1[1])
        {
        a1=btn1[1].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
        }
        if(btn==btn1[2])   
        {
        a1=btn1[2].getLabel();
            b1=b1+a1;
            text.setText(b1);
            
        }
      if(btn==btn1[3])   
      {
      a1=btn1[3].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
      if(btn==btn1[4])   
      {
      a1=btn1[4].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
      if(btn==btn1[5])   
      {
      a1=btn1[5].getLabel();
            b1=b1+a1;
            text.setText(b1);
            
      }
      if(btn==btn1[6])   
      {
      a1=btn1[6].getLabel();
            b1=b1+a1;
            text.setText(b1);
        
      }
      if(btn==btn1[7])   
      {
      a1=btn1[7].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
      if(btn==btn1[8])   
      {
      a1=btn1[8].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
      if(btn==btn1[9])   
      {
      a1=btn1[9].getLabel();
            b1=b1+a1;
            text.setText(b1);
         
      }
      if(btn==btn1[10])   
      {
      b3=text.getText();
      b1="";
      x=btn1[10].getLabel();
      
      }
      if(btn==btn1[11])   
      {
      b3=text.getText();
      b1="";
      x=btn1[11].getLabel();
      }
      if(btn==btn1[12])   
      {
      b3=text.getText();
      b1="";
      x=btn1[12].getLabel();
      }
      if(btn==btn1[13])   
      {
      b3=text.getText();
      b1="";
      x=btn1[13].getLabel();
      }
    if(btn==btn1[14])   
      {
      b1="";
      text.setText("0");

      }
      if(btn==btn1[15])   
      {
      b2=text.getText();
      b1="";
      if(x=="+")
      {
      float c =  Float.parseFloat(b3)+ Float.parseFloat(b2);
      text.setText(String.valueOf(c));
      }
      if(x=="-")
      {
      float c =  Float.parseFloat(b3)- Float.parseFloat(b2);
      text.setText(String.valueOf(c));
      }
      if(x=="*")
      {
      float c =  Float.parseFloat(b3)* Float.parseFloat(b2);
      text.setText(String.valueOf(c));
      }
      if(x=="/")
      {
      float c = Float.parseFloat(b3)/Float.parseFloat(b2);
      text.setText(String.valueOf(c));
      }
      
      }
      
      
      
    }
   
    public static void main(String args[])
{  
    EventTest frm=new EventTest();
   
}  
}


代码如上 就是我再按一下“=”这个按钮的时候 的出的结果不对  其他运算也一样只能运算一次不能再一次运算以后 连续按等号
帮帮修改一下
或者 有什么算法说一下 最好详细一点
谢谢了
还有 什么不好的地方请指出
不胜感激涕零啊


只看该作者    顶部
离线 smartpig
老会员



精华贴数 1
个人空间 160
技术积分 6333 (210)
社区积分 0 (1065439)
注册日期 2006-8-9
论坛徽章:33
会员2007贡献徽章开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-5-29 07:41 
找个源代码看看,已经有很多成熟的代码了,可以去参考一下


只看该作者    顶部
离线 hanfeishu
中级会员



精华贴数 0
个人空间 0
技术积分 4172 (341)
社区积分 0 (1286069)
注册日期 2007-2-28
论坛徽章:19
开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-5-29 07:42 
这个计算器就看你要不要做成复杂的了
简单的,等号就一次有用,连按就不做处理
另外你要做复杂的话,那就大了去了,还包括连按运算符、1+2之后不按等号再按其他运算符等等
我看你做这个的目的是熟悉AWT编程而不是去刻意的做一个计算器,那么做到了解流程就已经足够了,你说呢?


只看该作者    顶部
离线 xiening
初级会员



精华贴数 0
个人空间 0
技术积分 42 (31450)
社区积分 0 (347043)
注册日期 2005-4-13
论坛徽章:0
      
      

发表于 2008-5-31 15:56 
请问代码是那里的?是ide产生的吗?你的jdk是什么版本?编译能通过吗?

很多btn1, btn2 要改为 btn1  [ 用i], btn2  [ 用i]
还有disable() , enable()改为 setEnable(boolean)

好像是很老的书上的啊. 1.1的?

[ 本帖最后由 xiening 于 2008-6-1 11:25 编辑 ]


只看该作者    顶部
在线/呼叫 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 41024 (18)
社区积分 11485 (136)
注册日期 2005-6-10
论坛徽章:84
      
      

发表于 2008-5-31 23:16 
看什么东西呢


__________________
只看该作者    顶部
离线 Sky-Tiger
天王盖地虎


来自 Vancouver
精华贴数 39
个人空间 0
技术积分 161064 (3)
社区积分 46988 (14)
注册日期 2004-2-19
论坛徽章:271
现任管理团队成员ITPUB长老会成员Heart of PUB管理团队2007贡献徽章管理团队2006纪念徽章会员2007贡献徽章
会员2006贡献徽章开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:猴生肖徽章2007版:猪

发表于 2008-6-1 21:31 
还是双手互博!


__________________
-----孰能浊以静之徐清  孰能安以动之徐生-----  
-----风来疏竹  风过而竹不留声;雁照寒塘  雁去而塘不留影; 故君子事来而心始现  事去而心随空----

----------------
Groovy 研究中...
JAX-WS20(finished)/CXF/ESB/BPEL 研究中...
EJB3(finished)/Hibernate3 研究中...
OSGI/KnopflerFish 研究中...
JBOSS Seam2.0/JSF/AJAX(finished)/ICEFace/ZKoss/Flex3 研究中...
Mysql 研究中...
Spring2.5  研究中...
Blog/Wiki/RSS/ATOM 研究中...
只看该作者    顶部
离线 greenflute


精华贴数 0
个人空间 0
技术积分 7216 (178)
社区积分 162 (2640)
注册日期 2001-10-26
论坛徽章:15
现任管理团队成员ITPUB元老管理团队2007贡献徽章会员2007贡献徽章2008北京奥运纪念徽章:沙滩排球2008年新春纪念徽章
      

发表于 2008-6-1 23:41 


QUOTE:
原帖由 Sky-Tiger 于 2008-6-1 14:31 发表
还是双手互博!




只看该作者    顶部
离线 john3000


来自 广州
精华贴数 4
个人空间 0
技术积分 7893 (161)
社区积分 1482 (737)
注册日期 2006-9-5
论坛徽章:30
蓝锆石九尾狐狸紫蜘蛛玉石琵琶铁扇公主嫦娥
红孩儿玉兔授权会员生肖徽章2007版:羊生肖徽章2007版:龙生肖徽章2007版:龙

发表于 2008-6-2 15:36 


QUOTE:
原帖由 Sky-Tiger 于 2008-6-1 21:31 发表
还是双手互博!




__________________
XML学习中
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问