当前位置: 代码迷 >> Java相关 >> 新手,计算器的问题,请大神指点。
  详细解决方案

新手,计算器的问题,请大神指点。

热度:387   发布时间:2013-10-20 18:32:10.0
新手,计算器的问题,请大神指点。
程序代码:
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() {
    }
}
我想在这个类里面实现加减乘除括号优先级运算。想了很久都没头绪。。请大神指点指点。。
搜索更多相关的解决方案: 计算器  

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
搞错了,了个注释应该是网格布局。。
----------------解决方案--------------------------------------------------------
主要是怎么把获取 的文本框里的字符串表达式来把数字和运算符号分离的问题。。还有运算的先后问题。纠结啊。
----------------解决方案--------------------------------------------------------
说的什么啊?
----------------解决方案--------------------------------------------------------
找个可以计算字符串的jar包(我以前自己写过要的话回复,我找源码给你)

基本就是这样一个字符串  "3+3*2"  这个字串传入当参数 结果算出来是:9
----------------解决方案--------------------------------------------------------
回复 6楼 husiwen
好人,求源代码做参考。。。
----------------解决方案--------------------------------------------------------
回复 6楼 husiwen
如果可以的话,我的邮箱1136379716@qq.com
----------------解决方案--------------------------------------------------------
  相关解决方案