读书人

java兑现简易计算器

发布时间: 2012-11-01 11:11:32 作者: rapoo

java实现简易计算器

import javax.swing.JTextField;


public class Culator {

?private static final String String = null;
?JTextField op;
?private String re;

?/**
? * @param args
? */
?public static void main(String[] args) {
??Culator cul = new Culator();
??cul.init();
??// TODO Auto-generated method stub

?}
?public void init(){
??javax.swing.JFrame frame = new javax.swing.JFrame();
??frame.setTitle("计算器");
??java.awt.FlowLayout f1= new java.awt.FlowLayout();
??frame.setLayout(f1);
??javax.swing.JMenuBar cai = createMB();
??frame.setJMenuBar(cai);
??javax.swing.JButton mc = new javax.swing.JButton("MC");
??op= new javax.swing.JTextField("0",25);
??//设置数字从右边开始显示
??op.setHorizontalAlignment(JTextField.RIGHT);?
??//设置按钮
??javax.swing.JButton mr = new javax.swing.JButton("MR");
??javax.swing.JButton ms = new javax.swing.JButton("MS");
??javax.swing.JButton mp = new javax.swing.JButton("M+");
??javax.swing.JButton mm = new javax.swing.JButton("M-");
??javax.swing.JButton delete = new javax.swing.JButton(" ← ");
??javax.swing.JButton ce = new javax.swing.JButton("CE ");
??javax.swing.JButton c = new javax.swing.JButton(" C? ");
??javax.swing.JButton pm = new javax.swing.JButton("? ± ");
??javax.swing.JButton r = new javax.swing.JButton(" √ ");
??javax.swing.JButton seven = new javax.swing.JButton("? 7? ");
??javax.swing.JButton eight = new javax.swing.JButton("? 8? ");
??javax.swing.JButton nine = new javax.swing.JButton("? 9? ");
??javax.swing.JButton under = new javax.swing.JButton("? /? ");
??javax.swing.JButton percent = new javax.swing.JButton(" % ");
??javax.swing.JButton four = new javax.swing.JButton("? 4? ");
??javax.swing.JButton five = new javax.swing.JButton("? 5? ");
??javax.swing.JButton six = new javax.swing.JButton("? 6? ");
??javax.swing.JButton and = new javax.swing.JButton("? * ");
??javax.swing.JButton ds = new javax.swing.JButton("1/x");
??javax.swing.JButton one = new javax.swing.JButton("? 1? ");
??javax.swing.JButton two = new javax.swing.JButton("? 2? ");
??javax.swing.JButton three = new javax.swing.JButton("? 3? ");
??javax.swing.JButton m = new javax.swing.JButton("? - ");
??javax.swing.JButton equal = new javax.swing.JButton("? =? ");
??javax.swing.JButton zero = new javax.swing.JButton("???????????????????? 0???????????????????? ");
??javax.swing.JButton dot = new javax.swing.JButton("? .? ");
??javax.swing.JButton plus = new javax.swing.JButton("? +? ");
??//添加按钮
??frame.add(op);
??frame.add(mc);
??frame.add(mr);
??frame.add(ms);
??frame.add(mp);
??frame.add(mm);
??frame.add(delete);
??frame.add(ce);
??frame.add(c);
??frame.add(pm);
??frame.add(r);
??frame.add(seven);
??frame.add(eight);
??frame.add(nine);
??frame.add(under);
??frame.add(percent);
??frame.add(four);
??frame.add(five);
??frame.add(six);
??frame.add(and);
??frame.add(ds);
??frame.add(one);
??frame.add(two);
??frame.add(three);
??frame.add(m);
??frame.add(equal);
??frame.add(zero);
??frame.add(dot);
??frame.add(plus);
??frame.setSize(290,300);
??//实例化一个Caculate类
??Caculate cal = new Caculate(op);
??//增加监听
??op.addActionListener(cal);
??mc.addActionListener(cal);
??mr.addActionListener(cal);
??ms.addActionListener(cal);
??mp.addActionListener(cal);
??mm.addActionListener(cal);
??delete.addActionListener(cal);
??ce.addActionListener(cal);
??c.addActionListener(cal);
??pm.addActionListener(cal);
??r.addActionListener(cal);
??seven.addActionListener(cal);
??eight.addActionListener(cal);
??nine.addActionListener(cal);
??under.addActionListener(cal);
??percent.addActionListener(cal);
??four.addActionListener(cal);
??five.addActionListener(cal);
??six.addActionListener(cal);
??and.addActionListener(cal);
??ds.addActionListener(cal);
??one.addActionListener(cal);
??two.addActionListener(cal);
??three.addActionListener(cal);
??m.addActionListener(cal);
??equal.addActionListener(cal);
??zero.addActionListener(cal);
??dot.addActionListener(cal);
??plus.addActionListener(cal);
??frame.setDefaultCloseOperation(3);
??frame.setResizable(false);
??frame.setVisible(true);
??
?}
?//创建一个设置TextField窗口容的函数
?//public void setOp(String re){
?//?op.setText(re);
?//}
?//创建一个常带有菜单的菜单条,就加到JFrame上显示
?private javax.swing.JMenuBar createMB(){
??//创建菜单条
??javax.swing.JMenuBar mb = new javax.swing.JMenuBar();
??//创建查看菜单
??javax.swing.JMenu view = new javax.swing.JMenu("查看(V)");
??//创建菜单项
??javax.swing.JMenuItem biaozhun = new javax.swing.JMenuItem("标准型");
??javax.swing.JMenuItem kexue = new javax.swing.JMenuItem("科学型");
??javax.swing.JMenuItem chengxu = new javax.swing.JMenuItem("程序员");
??javax.swing.JMenuItem tongji = new javax.swing.JMenuItem("统计信息");
??javax.swing.JMenuItem history = new javax.swing.JMenuItem("历史");
??//将菜单项添加到菜单上
??view.add(biaozhun);
??view.add(kexue);
??view.add(chengxu);
??view.add(tongji);
??view.add(history);
??//创建编辑菜单
??javax.swing.JMenu operation = new javax.swing.JMenu("编辑(O)");
??//创建菜单项
??javax.swing.JMenuItem copy = new javax.swing.JMenuItem("复制");
??javax.swing.JMenuItem paste = new javax.swing.JMenuItem("黏贴");
??javax.swing.JMenuItem hr = new javax.swing.JMenuItem("历史记录");
??//将菜单项添加到菜单上
??operation.add(copy);
??operation.add(paste);
??operation.add(hr);
??//创建帮助菜单
??javax.swing.JMenu help = new javax.swing.JMenu("帮助(H)");
??//创建帮助菜单项
??javax.swing.JMenuItem vh = new javax.swing.JMenuItem("查看帮助");
??javax.swing.JMenuItem about = new javax.swing.JMenuItem("关于计算器");
??//将菜单项添加到菜单上
??help.add(vh);
??help.add(about);
??//加上一个分隔条
??help.addSeparator();
??//将菜单添加到菜单条上
??mb.add(view);
??mb.add(operation);
??mb.add(help);
??return mb;
??
??
??
??
?}
?

}
//定义计算的类

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

import javax.swing.JTextField;


public class Caculate implements ActionListener {
?//设置属性
?private String data;
?private JTextField text;
?private String result = "0";
?private boolean start_new = false;
?private double last_value = 0;
?private String ope = "";
?private double value = 0;
?public String getResult (){
??return result;
?}
?//定义一个构造方法
?public Caculate(JTextField text){
??this.text = text;
?}
??@Override//按钮事件处理
?public void actionPerformed(ActionEvent cal) {
??// TODO Auto-generated method stub
??data = cal.getActionCommand();
??data = data.trim();
??if("0123456789".indexOf(data) != -1){
???numButton(data);
??}else if (".".indexOf(data) != -1){
???dotButton(data);
??}else if ("+-*/".indexOf(data) != -1){
???operateButton(data);
??}else if ("=".indexOf(data)!=-1){
???equalButton();
??}
??//System.out.println(data);
??System.out.println(result);
??text.setText(result);
?}
?//计算程序
?private void numButton(String da){
??if(!start_new){
???result = result + da;
??}
??else{
???result = da;
??}
??while (result.startsWith("0")&&!result.startsWith("0.")&&result.length()>0){
???result = result.substring(1);
??}
??start_new = false;
?}
?private void dotButton(String da){
??if(da.indexOf(".")!= -1){
???result = result + da;
??}
?}
?private void operateButton(String da){
??if(result.length()>0){
???last_value = Double.parseDouble(result);
???ope = da;
???start_new = true;
??}
?}
?private void equalButton(){
??value = Double.parseDouble(result);
??if(ope.equals("+")){
???result = String.valueOf(last_value + value);
??}
??else if(ope.equals("-")){
???result = String.valueOf(last_value - value);
??}else if(ope.equals("*")){
???result = String.valueOf(last_value * value);
??}else if(ope.equals("/")){
???if(value == 0){
????result = "ERROR";
???}
???else{
????result = String.valueOf(last_value / value);
???}
??}
??// 去掉结尾的“.0000...”??
??????? if (result.matches(".+\\.0+")) {??
??????????? result = result.substring(0, result.lastIndexOf("."));??
??????? }??
?
??????? // 设置状态??
??????? start_new = true;??
??????? ope = "";??

??
?}

}

读书人网 >编程

热点推荐