首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

用java编撰的计算器

2012-10-08 
用java编写的计算器用java编写的计算器import java.awt.*import java.awt.event.*import java.util.*im

用java编写的计算器
用java编写的计算器

import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;public class Calculator extends JFrame{ private float op1,op2;//定义两个变量存放需要运算的值 private String str="";//定义str去和text进行交叉赋值 private String opr,co;//opr存放符合,co用来存放复制的内容 private double re;//用来存放运算的结果 private boolean bo=false;//是否进行了+-*/运算 private boolean btime=false;//时间开关    Container contentpane=this.getContentPane();    JPanel panel1=new JPanel(new BorderLayout()),           panel2=new JPanel(new FlowLayout()),           panel3=new JPanel(new GridLayout(4,5)),           panel4=new JPanel(new BorderLayout()),           panel5=new JPanel(new BorderLayout());    //菜单栏    JMenuBar menubar=new JMenuBar();    JMenu edit=new JMenu("编辑(E)"),          find=new JMenu("查看(V)"),          help=new JMenu("帮助(H)");    JMenuItem copy=new JMenuItem("复制(C)",'C'),              paste=new JMenuItem("粘贴(P)",'P'),              standard=new JMenuItem("标准型(T)",'T'),              science=new JMenuItem("科学型(S)",'S'),              numarray=new JMenuItem("数字分组(I)",'I'),              helptopic=new JMenuItem("帮助主题(H)",'H'),              aboutcal=new JMenuItem("关于计算器(A)",'A');    //输入文本框    JTextField text=new JTextField(25);    //数字键    JButton  one=new JButton("1"),             two=new JButton("2"),             three=new JButton("3"),             four=new JButton("4"),             five=new JButton("5"),             six=new JButton("6"),             seven=new JButton("7"),             eight=new JButton("8"),             nine=new JButton("9"),             zero=new JButton("0");    //功能键    JButton division=new JButton("/"),            multiply=new JButton("*"),            addition=new JButton("+"),            subtration=new JButton("-"),            sqrt=new JButton("sqrt"),            residual=new JButton("%"),            sign=new JButton("+/-"),            dot=new JButton("."),            reciprocal=new JButton("1/X"),            amount=new JButton("="),            backspace=new JButton("Backspace"),            ce=new JButton("CE"),            c=new JButton("C"),            time=new JButton("time");public Calculator() {contentpane.setLayout(new BorderLayout());//textField文本从右边开始写text.setHorizontalAlignment(SwingConstants.RIGHT);text.setText("0.");//菜单栏添加edit.add(copy);edit.add(paste);find.add(standard);find.add(science);find.addSeparator();find.add(numarray);help.add(helptopic);help.addSeparator();help.add(aboutcal);//把组件添加至容器中menubar.add(edit);menubar.add(find);menubar.add(help);panel1.add(menubar,"North");panel1.add(text,"West");//添加数字、功能键至panel2、panel3panel2.add(backspace);panel2.add(ce);panel2.add(c);panel2.add(time);panel3.add(seven);panel3.add(eight);panel3.add(nine);panel3.add(division);panel3.add(sqrt);panel3.add(four);panel3.add(five);panel3.add(six);panel3.add(multiply);panel3.add(residual);panel3.add(one);panel3.add(two);panel3.add(three);panel3.add(subtration);panel3.add(reciprocal);panel3.add(zero);panel3.add(sign);panel3.add(dot);panel3.add(addition);panel3.add(amount);panel4.add(panel2,"North");panel4.add(panel3,"West");panel5.add(panel1,"North");panel5.add(panel4,"West");contentpane.add(panel5,"North");//事件//助记符edit.setMnemonic('E');find.setMnemonic('V');help.setMnemonic('H');//快捷键KeyStroke kcopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);copy.setAccelerator(kcopy);KeyStroke kpaste=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);paste.setAccelerator(kpaste);//0-9、.的显示事件actionlistener1 al1=new actionlistener1();one.addActionListener(al1);two.addActionListener(al1);three.addActionListener(al1);four.addActionListener(al1);five.addActionListener(al1);six.addActionListener(al1);seven.addActionListener(al1);eight.addActionListener(al1);nine.addActionListener(al1);//小数点的ActionListener事件dot.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int count;count=str.length();//1.第一位就为.时改变text中内容为:"0."if(count==0){str="0.";text.setText(str);}//2.不可以重复按"."else {if(!str.contains(".")){  str+=".";  text.setText(str);}elseSystem.out.println("您再点的话,输入的将不再是小数了!");}}});//如果第一位是0那么第二位就不可以为0zero.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int count;count=str.length();if(bo){if(!(str.contains("0")&&count==1)){  str="";  str+="0";  text.setText(str);}elseSystem.out.println("您再点的话,输入的将不再是数字了!");  }else{if(!(str.contains("0")&&count==1)){  str+="0";  text.setText(str);}elseSystem.out.println("您再点的话,输入的将不再是数字了!");}bo=false;}});//+、-、*、/、%运算actionlistener3 al3=new actionlistener3();addition.addActionListener(al3);subtration.addActionListener(al3);multiply.addActionListener(al3);division.addActionListener(al3);residual.addActionListener(al3);//CE和C清空按钮时间actionlistener2 al2=new actionlistener2();ce.addActionListener(al2);c.addActionListener(al2);//退格键backspace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int count; count=str.length()-1; if(bo==false){ if(count>=0){ str=str.substring(0,count); text.setText(str); } else text.setText("0."); }else System.out.println("您现在正进行法则运算!"); }});//求平方根sqrt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int count; count=str.length(); if(count!=0){ op1=Float.parseFloat(text.getText()); re=Math.sqrt(op1); String str1=String.valueOf(re); text.setText(str1); str=""; } else System.out.println("您现在的按sqrt键毫无意义"); }});//求倒数reciprocal.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int count; count=str.length(); if(count!=0){ op1=Float.parseFloat(text.getText()); if(op1!=0){ re=1/op1; String str1=String.valueOf(re); text.setText(str1); str=str1; } else{ text.setText("除数不可以为0的");      str=""; } } else System.out.println("您现在的按1/X键毫无意义"); }});//=事件amount.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ op2=Float.parseFloat(str);//需判断进行那种运算法则 if(opr=="+"){//加法运算 re=op1+op2; String str1=String.valueOf(re); text.setText(str1); str=String.valueOf(re); }else{ if(opr=="-"){//减法运算 re=op1-op2; String str1=String.valueOf(re); text.setText(str1); str=String.valueOf(re); }else{ if(opr=="*"){//乘法运算 re=op1*op2; String str1=String.valueOf(re); text.setText(str1); str=String.valueOf(re); }else{ if(opr=="/"&&op2!=0){//除法运算 re=op1/op2; String str1=String.valueOf(re); text.setText(str1); str=String.valueOf(re); }else{ if(opr=="%"){//取余运算 re=op1%op2; String str1=String.valueOf(re); text.setText(str1); str=""; } else if(op2==0){ text.setText("除数不可以为0的"); str=""; } } } } } //打印看看 System.out.print(op1); System.out.print(opr); System.out.print(op2+"="); System.out.print(re); System.out.println(); }});//复制事件copy.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){ int count; count=str.length(); if(count!=0){   co=text.getText(); } else System.out.println("没有可复制的对象");}});//粘贴事件paste.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){str=co;text.setText(str);}});//时间事件time.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(btime==false){String st=(new Date()).toString();text.setText(st);str="";btime=true;}else{text.setText(str);btime=false;}}});//+/-事件sign.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int a=Integer.valueOf(str);a=a*(-1);str=String.valueOf(a);text.setText(str);}});}//定义1-9按钮在text中显示的内部类  class actionlistener1 implements ActionListener{  public void actionPerformed(ActionEvent e){  JButton button=(JButton)e.getSource();  String btext=button.getText();  //如果第一位为0再输入其他非零的整数时将零忽略  if(bo){  if(str.indexOf("0")==0&&str.length()==1){  str="";  str+=btext;  text.setText(str);}else{    str="";    str+=btext;    text.setText(str);}  }else{  if(str.indexOf("0")==0&&str.length()==1){  str="";  str+=btext;  text.setText(str);}else{  str+=btext;  text.setText(str);  }  }  bo=false;  }  }  //定义清空text中内容的内部类  class actionlistener2 implements ActionListener{  public void actionPerformed(ActionEvent e){      str="";  text.setText("0.");  }  }  //定义+、-、*、/、%运算的内部类  class actionlistener3 implements ActionListener{  public void actionPerformed(ActionEvent e){  int count;    count=str.length();  if(count!=0){  JButton button=(JButton)e.getSource();     opr=button.getText();     op1=Float.parseFloat(str);     bo=true;  }  else  System.out.println("您现在的按键毫无意义!");  }  }  public static void main(String[] args){  Calculator cc=new Calculator();  cc.pack();  cc.setResizable(false);//不可最大化  cc.setVisible(true);  cc.setTitle("计算器");  cc.setDefaultCloseOperation(EXIT_ON_CLOSE);  Dimension scmsize=Toolkit.getDefaultToolkit().getScreenSize();  int w=cc.getSize().width;  int h=cc.getSize().height;  int x=(scmsize.width-w)/2;  int y=(scmsize.height-h)/2;  cc.setLocation(x, y);  }}

热点排行