| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 619 人关注过本帖
标题:新手,计算器的问题,请大神指点。
只看楼主 加入收藏
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:8 
新手,计算器的问题,请大神指点。
程序代码:
package Study;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

/**

 * 简单计算器窗口

 * 

 * @author Sky。 2013-10-18

 */
@SuppressWarnings("serial")
public class ChuangKou extends JFrame implements ActionListener {
    static JTextField field = new JTextField();// 文本框
    static String suanShi;
    
    public static void main(String[] args) {
        new ChuangKou();// 实例化
    }

    /**
     * 窗口属性设置
     */
    public ChuangKou() {
        super("计算器");
        this.setSize(220, 250);// 窗口大小
        Container c=getContentPane();
        JPanel panel = new JPanel();// 面板
        
        panel. setLayout(new GridLayout(0,4, 5, 5));//流布局
        String[] anNiu = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3",
                "×", ".", "0", "=", "÷","(",")","←","c" };// 按钮名字的组
        // 添加按钮到面板
        for (int i = 0; i < anNiu.length; i++) {
            JButton button = new JButton(anNiu[i]);
            button.addActionListener(this);// 为每个按钮注册监听器
            panel.add(button);
        }

        c.add(panel);// 添加面板到
        c.add(field, "North");// 添加文本框到窗口北部
        setResizable(false);// 固定窗口
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 点击关闭窗口结束程序
        this.setVisible(true);// 窗口可见
    }

    /*处理鼠标单击按钮的事件
     * (non-Javadoc)
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        //处理单机数字按钮时的事件
        if (e.getActionCommand().equals("1")) {
            field.setText(field.getText() + "1");
        }
        if (e.getActionCommand().equals("2")) {
            field.setText(field.getText() + "2");
        }
        if (e.getActionCommand().equals("3")) {
            field.setText(field.getText() + "3");
        }
        if (e.getActionCommand().equals("4")) {
            field.setText(field.getText() + "4");
        }
        if (e.getActionCommand().equals("5")) {
            field.setText(field.getText() + "5");
        }
        if (e.getActionCommand().equals("6")) {
            field.setText(field.getText() + "6");
        }
        if (e.getActionCommand().equals("7")) {
            field.setText(field.getText() + "7");
        }
        if (e.getActionCommand().equals("8")) {
            field.setText(field.getText() + "8");
        }
        if (e.getActionCommand().equals("9")) {
            field.setText(field.getText() + "9");
        }
        if (e.getActionCommand().equals(".")) {
            field.setText(field.getText()+".");
        }
        if (e.getActionCommand().equals("0")) {
            field.setText(field.getText() + "0");
        }
        //处理单击加减乘除按钮的事件
        if (e.getActionCommand().equals("+")) {
            field.setText(field.getText()+"+");
        }
        if (e.getActionCommand().equals("-")) {
            field.setText(field.getText()+"-");
        }
        if (e.getActionCommand().equals("×")) {
            field.setText(field.getText()+"×");
        }
        if (e.getActionCommand().equals("÷")) {
            field.setText(field.getText()+"÷");
        }
        if (e.getActionCommand().equals("(")) {
            field.setText(field.getText() + "(");
        }
        if (e.getActionCommand().equals(")")) {
            field.setText(field.getText() + ")");
        }
        //处理单击退格按钮的事件
        if (e.getActionCommand().equals("←")) {
            StringBuffer buffer=new StringBuffer(field.getText());//获取当前文本框的内容
            buffer=buffer.deleteCharAt(buffer.length()-1);//去掉最后一位字符实现退格
            String aString=buffer.toString();    //将StringBuffer转为String型
            field.setText(aString);
        }
        //处理单击等于按钮的事件
        if (e.getActionCommand().equals("=")) {
             suanShi=field.getText();
            
        }
        //处理清除按钮的事件
        if (e.getActionCommand().equals("c")) {
            field.setText("");
        }

    }
}

程序代码:
package Study;

/**

 * 计算器算法

 * 

 * @author Sky。 2013-10-19

 */

public class SuanFa {
    static String string = ChuangKou.suanShi;// 文本框中所输入的算式
    
    static void result() {
    }
}
我想在这个类里面实现加减乘除括号优先级运算。想了很久都没头绪。。请大神指点指点。。
搜索更多相关主题的帖子: 计算器 
2013-10-20 18:32
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
收藏
得分:0 
2013-10-20 18:38
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
收藏
得分:0 
搞错了,了个注释应该是网格布局。。
2013-10-20 19:40
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
收藏
得分:0 
主要是怎么把获取 的文本框里的字符串表达式来把数字和运算符号分离的问题。。还有运算的先后问题。纠结啊。
2013-10-20 19:43
java小蚂蚁
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:上海
等 级:贵宾
威 望:18
帖 子:558
专家分:2186
注 册:2013-7-2
收藏
得分:10 
说的什么啊?

学海无涯#¥%……&*(
2013-10-21 09:17
husiwen
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:227
专家分:1125
注 册:2010-5-23
收藏
得分:10 
找个可以计算字符串的jar包(我以前自己写过要的话回复,我找源码给你)

基本就是这样一个字符串  "3+3*2"  这个字串传入当参数 结果算出来是:9
2013-10-21 10:36
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
收藏
得分:0 
回复 6楼 husiwen
好人,求源代码做参考。。。
2013-10-21 18:29
qq1136379716
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-6-13
收藏
得分:0 
回复 6楼 husiwen
如果可以的话,我的邮箱1136379716@
2013-10-21 20:57
husiwen
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:227
专家分:1125
注 册:2010-5-23
收藏
得分:0 
回复 8楼 qq1136379716
几天没上了..马上发你邮箱
2013-10-30 20:02
快速回复:新手,计算器的问题,请大神指点。
数据加载中...
 
   



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

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