| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:改进后的计算器
只看楼主 加入收藏
yinmingzheng13
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-13
结帖率:100%
收藏
 问题点数:0 回复次数:1 
改进后的计算器
小弟不才,耗时两周,东拼西凑,终于做成这简单的计算器
                     啊!  颇有些成就感。。。。。
        但对于“多零”和“多点”情况还有点无能为力, 希望各位大虾不吝赐教!!!!!!!!!!!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyCounter extends JFrame implements ActionListener
{
    private JTextField text;
    private JButton[] buttons;
    
    private String p;               // p为当前读入的信息
    private String s;               // s从键盘中获取的命令
    private String symbol;          // symbol表示要进行的运算
    private double x;               // x表示输入符号后的数字
    private double result;          // result为计算结果和读入符号前的数
    private boolean flg;            // flg表示是否已经输入符号
    private boolean point;          // point表示是否读入点
    
    public MyCounter()
    {
        super("计算器");
        this.setSize(200,300);
        this.setLocation(400,300);
        this.setResizable(false);    // 窗口大小不可调整
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    
        text = new JTextField("0");
        text.setBackground(Color.cyan);
        text.setHorizontalAlignment(JTextField.RIGHT);    // 右对齐显示
        text.setEditable(false);                          //文本框不可编辑   
        this.add(text,"North");
        
        JPanel p1 = new JPanel(new GridLayout(4,4));
             buttons = new JButton[19];
        buttons[0] =  new JButton("7");
        buttons[1] =  new JButton("8");
        buttons[2] =  new JButton("9");
        buttons[3] =  new JButton("+");
        buttons[4] =  new JButton("4");
        buttons[5] =  new JButton("5");
        buttons[6] =  new JButton("6");
        buttons[7] =  new JButton("-");
        buttons[8] =  new JButton("1");
        buttons[9] =  new JButton("2");
        buttons[10] = new JButton("3");
        buttons[11] = new JButton("*");
        buttons[12] = new JButton("0");
        buttons[13] = new JButton(".");
        buttons[14] = new JButton("=");
        buttons[15] = new JButton("/");
        for(int i=0;i<16;i++)
        {
            p1.add(buttons[i]);
            buttons[i].addActionListener(this);
        }
        buttons[14].setBackground(Color.orange);
        this.add(p1,"Center");
        
        JPanel p2 = new JPanel();
        buttons[16] = new JButton("+/-");
        buttons[17] = new JButton("清除");
        buttons[18] = new JButton("退格");
        for(int i=16;i<19;i++)
        {
            p2.add(buttons[i]);
            buttons[i].addActionListener(this);
            buttons[i].setBackground(Color.green);
        }
        this.add(p2,"South");
        
        this.setVisible(true);    
    }
    
    
    public void actionPerformed(ActionEvent e)
    {
           //  以下两句有总纲切领只要,甚为巧妙
           //  将读入命令与文本内容分开
           //  方法 getText() 与 setText() 类似 蛋鸡问题。
        p = text.getText();
        s = e.getActionCommand();
        
        if(s=="0"|s=="1"|s=="2"|s=="3"|s=="4"|s=="5"|
           s=="6"|s=="7"|s=="8"|s=="9"|s==".")   
        {
            if(flg)
            {
                text.setText(p+s);
            }
            else
            {
                text.setText(s);
                flg = true;
            }
        }
        
        if(s=="+"|s=="-"|s=="*"|s=="/")
        {
            result = Double.parseDouble(p);
            flg = false;
            symbol = s;
        }
        
        if(s=="=")
        {
            x = Double.parseDouble(p);
            if(symbol=="+")    result += x;
                 if(symbol=="-")    result -= x;
            if(symbol=="*")    result *= x;
            if(symbol=="/")    result /= x;
            text.setText(""+result);
            flg = false;
        }
        
        if(s=="+/-")
        {
            text.setText(-Double.parseDouble(p)+"");    //类型多次转换
        }
            
        if(s=="清除")
        {
            text.setText("0");
            flg = false;             //不使上0读入
        }
        
        if(s=="退格")      
        {
            String ss = p;
            int i = ss.length();
            if(i>0)
            {
                ss =  ss.substring(0,i-1);
                text.setText(ss);       // 同上  
            }
            else if(i==0)   
            {
                text.setText("0");
                flg = false;
            }
        }
    }
    
    
    public static void main(String[] args)
    {
        new MyCounter();
    }         
}
搜索更多相关主题的帖子: 计算器 改进 
2008-11-14 17:09
binbindj123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-14
收藏
得分:0 
2010-10-28 20:44
快速回复:改进后的计算器
数据加载中...
 
   



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

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