用JAVA编写计算器程序(模拟Windows计算器)
- 格式:doc
- 大小:38.50 KB
- 文档页数:14
运行效果如下import java.awt.*;import java.awt.event.*;public class Calculator{Frame f=new Frame("计算器");MyListener myListener=new MyListener();Calculate c=new Calculate();MenuBar mb=new MenuBar();Menu mEdit=new Menu("编辑(E)");Menu mV iew=new Menu("查看(V)");Menu mHelp=new Menu("帮助(H)");MenuItem miCopy=new MenuItem("复制(C) Ctrl+C");MenuItem miPaste=new MenuItem("粘贴(P) Ctrl+V");MenuItem miT=new MenuItem("标准型(T)");MenuItem miS=new MenuItem("科学型(S)");MenuItem miI=new MenuItem("数字分组(I)");MenuItem miH=new MenuItem("帮助主题(H)");MenuItem miA=new MenuItem("关于计算器(A)");Panel p1=new Panel();Panel p2=new Panel();Panel p3=new Panel();Panel p4=new Panel();Panel p5=new Panel();Panel p6=new Panel();Label l2=new Label("");TextField tf=new TextField("",20);TextField tf1=new TextField();Button bt[]=new Button[27];String[] ss={"BackSpace","CE","C","MC","MR","MS","M+","7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};public Calculator(){f.setLayout(new BorderLayout(10,5));f.setResizable(false);f.setBackground(new Color(2,120,2));mb.add(mEdit);mb.add(mV iew);mb.setHelpMenu(mHelp);//将指定的菜单设置为此菜单栏的帮助菜单mEdit.add(miCopy);mEdit.add(miPaste);mV iew.add(miT);mV iew.add(miS);mV iew.addSeparator();//将一个分隔线或连字符添加到菜单的当前位置mV iew.add(miI);mHelp.add(miH);mHelp.addSeparator();mHelp.add(miA);p1.setLayout(new BorderLayout(10,10));p2.setLayout(new BorderLayout(10,10));//p5,p6p3.setLayout(new GridLayout(1,3,5,5));//用于存放backspace,ce,c三键p4.setLayout(new GridLayout(4,5,5,5));//用于存放数字区及附近共20键p5.setLayout(new GridLayout(5,1,5,5));//用于存放MC,MR,MS,M+键及显示M状态文本框p6.setLayout(new BorderLayout(10,5));//放p3 p4p3.setForeground(Color.yellow);//设置组件的前景色。
模拟计算器java程序一.需求分析日常生活中,我们经常会碰到一些计算问题,因计算量大而复杂,是人头痛,所以计算器就诞生了。
计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于商业等日常生活中,极大的方便了人们对于数字的整合运算。
二.程序功能及说明/*实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
界面将模拟Windows中的计算器程序。
*/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Hashtable;public class Calculator extends Frame implements ActionListener{Panel txtpanel,btnpanel,southpanel;JTextField txtinput;JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,bf;JButtonchengbtn,chubtn,jiabtn,jianbtn,clearbtn,equalbtn,sinbtn,cosbtn,jiechengbtn, sqrtbtn,zhishubtn,daoshubtn;double sum,result;Menu editM,searchM,helpM;MenuBar bar;String sign;boolean bool=true;public Calculator(){super("计算器");txtpanel=new Panel();btnpanel=new Panel();southpanel=new Panel();txtinput=new JTextField(40);txtinput.setEditable(false);txtinput.setText("");bar=new MenuBar();helpM=new Menu("帮助");helpM.add(new MenuItem("帮助主题")); helpM.addSeparator();helpM.add(new MenuItem("sin正弦")); helpM.add(new MenuItem("cos余弦")); helpM.add(new MenuItem("!阶乘")); helpM.add(new MenuItem("C清除")); helpM.add(new MenuItem("÷除"));helpM.add(new MenuItem("*乘"));helpM.add(new MenuItem("+加"));helpM.add(new MenuItem("-减"));helpM.add(new MenuItem("+/-正负变号")); helpM.add(new MenuItem("√开方")); helpM.add(new MenuItem("1/x倒数x^y")); helpM.add(new MenuItem("x^y次方")); helpM.add(new MenuItem("1~9数字键")); helpM.add(new MenuItem("=等于"));bar.add(helpM);setMenuBar(bar);//关联各键与符号并设置键的符号字体大小及颜色b1=new JButton("1");b1.setFont(new Font("1",Font.BOLD,20));b1.setForeground(Color.black);b2=new JButton("2");b2.setFont(new Font("2",Font.BOLD,20));b2.setForeground(Color.black);b3=new JButton("3");b3.setFont(new Font("3",Font.BOLD,20));b3.setForeground(Color.black);b4=new JButton("4");b4.setFont(new Font("4",Font.BOLD,20));b4.setForeground(Color.black);b5=new JButton("5");b5.setFont(new Font("5",Font.BOLD,20));b5.setForeground(Color.black);b6=new JButton("6");b6.setFont(new Font("6",Font.BOLD,20));b6.setForeground(Color.black);b7=new JButton("7");b7.setFont(new Font("7",Font.BOLD,20));b7.setForeground(Color.black);b8=new JButton("8");b8.setFont(new Font("8",Font.BOLD,20));b8.setForeground(Color.black);b9=new JButton("9");b9.setFont(new Font("9",Font.BOLD,20));b9.setForeground(Color.black);b0=new JButton("0");b0.setFont(new Font("0",Font.BOLD,20));b0.setForeground(Color.black);bdes=new JButton(".");bdes.setFont(new Font(".",Font.BOLD,20)); bdes.setForeground(Color.black);bf=new JButton("+/-");bf.setFont(new Font("+/-",Font.BOLD,20)); bf.setForeground(Color.red);chengbtn=new JButton("*");chengbtn.setFont(new Font("*",Font.BOLD,20)); chengbtn.setForeground(Color.red);chubtn=new JButton("÷");chubtn.setFont(new Font("÷",Font.BOLD,20)); chubtn.setForeground(Color.red);jiabtn=new JButton("+");jiabtn.setFont(new Font("+",Font.BOLD,20)); jiabtn.setForeground(Color.red);jianbtn=new JButton("-");jianbtn.setFont(new Font("-",Font.BOLD,20));jianbtn.setForeground(Color.red);clearbtn=new JButton("C");clearbtn.setFont(new Font("C",Font.BOLD,20));clearbtn.setForeground(Color.red);clearbtn.addActionListener(new ActionListener()//创建监听器{public void actionPerformed(ActionEvent e){txtinput.setText("");}});sinbtn=new JButton("sin");sinbtn.setFont(new Font("sin",Font.BOLD,15));sinbtn.setForeground(Color.red);cosbtn=new JButton("cos");cosbtn.setFont(new Font("cos",Font.BOLD,15));cosbtn.setForeground(Color.red);sqrtbtn=new JButton("√");sqrtbtn.setFont(new Font("√",Font.BOLD,15));sqrtbtn.setForeground(Color.red);zhishubtn=new JButton("x^y");zhishubtn.setFont(new Font("x^y",Font.BOLD,15)); zhishubtn.setForeground(Color.red);daoshubtn=new JButton("1/x");daoshubtn.setFont(new Font("1/x",Font.BOLD,15)); daoshubtn.setForeground(Color.red);jiechengbtn=new JButton("!");jiechengbtn.setFont(new Font("!",Font.BOLD,20)); jiechengbtn.setForeground(Color.red);equalbtn=new JButton("=");equalbtn.setFont(new Font("=",Font.BOLD,20));equalbtn.setForeground(Color.red);//设置键位分布setLayout(new BorderLayout());txtpanel.add(txtinput);add("North",txtpanel);btnpanel.setLayout(new GridLayout(5,4,1,3));//五行四列分布btnpanel.add(sinbtn);btnpanel.add(cosbtn);btnpanel.add(jiechengbtn);btnpanel.add(clearbtn);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(chubtn);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(chengbtn);btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(jianbtn);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(bf);btnpanel.add(jiabtn);add("Center",btnpanel);southpanel.setLayout(new GridLayout(1,4,1,3));//一行四列分布southpanel.add(sqrtbtn);southpanel.add(zhishubtn);southpanel.add(daoshubtn);southpanel.add(equalbtn);add("South",southpanel);//监听按键b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bdes.addActionListener(this);bf.addActionListener(this);sinbtn.addActionListener(this);cosbtn.addActionListener(this);jiechengbtn.addActionListener(this); sqrtbtn.addActionListener(this);zhishubtn.addActionListener(this); daoshubtn.addActionListener(this); chengbtn.addActionListener(this);chubtn.addActionListener(this);jiabtn.addActionListener(this);jianbtn.addActionListener(this);equalbtn.addActionListener(this);setSize(280,290);setVisible(true);setLocation(400,200);addWindowListener(new WindowCloser());}class WindowCloser extends WindowAdapter{public void windowClosing(WindowEvent e){ System.exit(0);}}public void actionPerformed(ActionEvent e){Object obj=e.getSource();//设置相关计算方法if(obj==b1)txtinput.setText(txtinput.getText()+"1"); else if(obj==b2)txtinput.setText(txtinput.getText()+"2"); else if(obj==b3)txtinput.setText(txtinput.getText()+"3"); else if(obj==b4)txtinput.setText(txtinput.getText()+"4"); else if(obj==b5)txtinput.setText(txtinput.getText()+"5");else if(obj==b6)txtinput.setText(txtinput.getText()+"6");else if(obj==b7)txtinput.setText(txtinput.getText()+"7");else if(obj==b8)txtinput.setText(txtinput.getText()+"8");else if(obj==b9)txtinput.setText(txtinput.getText()+"9");else if(obj==b0)txtinput.setText(txtinput.getText()+"0");else if(obj==bdes)txtinput.setText(txtinput.getText()+".");else if(obj==bf){sum=Double.valueOf(txtinput.getText()).doubleValue();boolean bool=true;if(bool){result=sum-2*sum;bool=false;}else{result=sum+2*sum;}txtinput.setText(String.valueOf(result));}else if(obj==sinbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.sin(sum);txtinput.setText(String.valueOf(result));}else if(obj==cosbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.cos(sum);txtinput.setText(String.valueOf(result));}else if(obj==zhishubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="x^y";txtinput.setText("");}else if(obj==daoshubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=1/sum;txtinput.setText(String.valueOf(result));//sign="1/x";//txtinput.setText("");}else if(obj==sqrtbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();result=Math.sqrt(sum);txtinput.setText(String.valueOf(result));//sign="√";//txtinput.setText("");}else if(obj==jiechengbtn){int n;n=(int)Double.valueOf(txtinput.getText()).doubleValue();result=fac(n);txtinput.setText(String.valueOf(result));}else if(obj==jiabtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="+";txtinput.setText("");}else if(obj==jianbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="-";txtinput.setText("");}else if(obj==chubtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="÷";txtinput.setText("");}else if(obj==chengbtn){sum=Double.valueOf(txtinput.getText()).doubleValue();sign="*";txtinput.setText("");}else if(sign=="+"){result=sum+Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="-"){result=sum-Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="÷"){double n;String m="除零错误!";n=Double.valueOf(txtinput.getText()).doubleValue();if(n==0){JOptionPane.showMessageDialog(this,m,"error", JOptionPane.ERROR_MESSAGE);}elseresult=sum/n;txtinput.setText(String.valueOf(result));}else if(sign=="*"){result=sum*Double.valueOf(txtinput.getText()).doubleValue();txtinput.setText(String.valueOf(result));}else if(sign=="x^y"){result=Math.pow(sum,Double.valueOf(txtinput.getText()).doubleValue());txtinput.setText(String.valueOf(result));}else if(sign=="sin"){result=Math.sin(sum);txtinput.setText(String.valueOf(result));}else if(sign=="cos"){result=Math.cos(sum);txtinput.setText(String.valueOf(result));}else if(sign=="!"){int i=(int)Double.valueOf(txtinput.getText()).doubleValue();for(int j=i;j>0;i--){result=j*(j-1);}txtinput.setText(String.valueOf(result));}else if(obj=="√"){;result=Math.sqrt(sum);txtinput.setText(String.valueOf(result));}else if(obj=="1/x"){result=1/sum;txtinput.setText(String.valueOf(result));}}private long fac(int n){long f;if(n==0)f=1;else f=fac(n-1)*n;return f;}public static void main(String args[]){try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");}catch(Exception e){}new Calculator();//使用windows显示风格}}三.运行结果实现加、减、乘、除、阶乘、正弦、余弦和指数运算:功能说明:四.总结及体会不足:1.各种计算功能有待增加,可参考电脑自带计算机2.显示界面皮肤单一,可增加多种,以便个人喜好3.未设置计算值的复制和黏贴功能,单位换算功能等等收获:对java的应用,有了一定了解和延伸,对于未来设计相关功能程序有较大帮助。
⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。
JAVA简易计算器程序源代码package myText;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;public class Calculator extends JFrame implements ActionListener{ private JPanel Panel1=new JPanel();private JPanel Panel2=new JPanel();private JTextField tfResult=new JTextField(25);private JLabel label=new JLabel("计算结果:");private String recentOperation=null;private String recentNum=null;private boolean isNew=true;public void addButton(Container c,String s){JButton b=new JButton(s);b.setFont(new java.awt.Font("SansSerif",0,12));b.setForeground(Color.red);b.setBorder(BorderFactory.createRaisedBevelBorder());c.add(b);b.addActionListener(this);}//end public void addButton(Container c,String s)public void actionPerformed(ActionEvent e){String s=e.getActionCommand();if(s.charAt(0)>='0'&&s.charAt(0)<='9'){if(!isNew){tfResult.setText(tfResult.getText()+s);}//end if(!isNew)else{tfResult.setText(s);}//end elseisNew=false;}//end if(s.charAt(0)>='0'&&s.charAt(0)<='9') else if(s.equals(".")){if(tfResult.getText().indexOf(".")!=-1)return;if(!isNew&&tfResult.getText()!=""){tfResult.setText(tfResult.getText()+".");}//end ifelse{tfResult.setText("0.");}//end elseisNew=false;}//end if(s.equals("."))else if(s.equals("=")){equalaction(e);}//end if(s.equals("="))else{if((tfResult.getText()).equals("")){return;}//endif((tfResult.getText()).equals(""))if(recentOperation!=null){equalaction(e);}//end if(recentOperation!=null) recentOperation=s;recentNum=tfResult.getText();isNew=true;}//end else}//end public void actionPerformed(ActionEvent e) void equalaction(ActionEvent e){if(recentOperation==null||recentNum==null||tfResult.getTex t().equals("")){ return;}//end if()double last=0,now=0;try{last=Double.parseDouble(recentNum);now=Double.parseDouble(tfResult.getText());}//end trycatch(NumberFormatException ne){recentOperation=null;recentNum=null;tfResult.setText("数据输入不合法");System.out.println("数据输入不合法");isNew=true;return;}//end catch(NumberFormatException ne)if(recentOperation.equals("+")){last+=now;}//end if(recentOperation.equals("+"))if(recentOperation.equals("-")){last-=now;}//endif(recentOperation.equals("-"))if(recentOperation.equals("*")){last*=now;}//endif(recentOperation.equals("*"))if(recentOperation.equals("/")){last/=now;}//endif(recentOperation.equals("/"))tfResult.setText(""+last);recentNum=tfResult.getText();recentOperation=null;isNew=true;}//end void equalaction(ActionEvent e)public Calculator(){tfResult.setBorder(BorderFactory.createLoweredBevelBorder ());tfResult.setEditable(false);tfResult.setText("0");tfResult.setHorizontalAlignment(SwingConstants.RIGHT);////本java源代码由839682048整理修改//////Panel1.add(label,FlowLayout.LEFT);Panel1.add(tfResult);////本java源代码由839682048整理修改///Panel2.setLayout(new GridLayout(4,4,2,2));String buttons="789/456*123-0.=+";for(int i=0;i<buttons.length();i++){< p="">addButton(Panel2,buttons.substring(i,i+1));}//end for()//本java源代码由839682048整理修改///this.getContentPane().add(Panel1,"North");this.getContentPane().add(Panel2,"Center");this.setResizable(false);this.setTitle("计算器");this.addWindowListener(newjava.awt.event.WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}//end public Calculator1()public static void main(String[]args){Calculator mf=new Calculator();mf.setBounds(200,200,400,400);mf.show();}//end main()}//end public class Calculator1extends JFrame implements ActionListener</buttons.length();i++){<>。
java实现的计算器-WindowBuilder import java.awt.BorderLayout; import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder; import java.awt.GridBagLayout; import javax.swing.JButton;import java.awt.GridBagConstraints; import java.awt.Insets;import javax.swing.JTextField; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /**** 简易计算器,只能完成一次运算,不能连续输入,连续计算* @author admin**/public class CalcuatorSimple extends JFrame {private JPanel contentPane;private JTextField textField;private double operand1;//操作数private double operand2;private String operator;//运算符private String express; //表达式/*** Launch the application.*/public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {public void run() {try {CalcuatorSimple frame = new CalcuatorSimple(); frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public CalcuatorSimple() {setResizable(false);setTitle("\u8BA1\u7B97\u5668"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 271, 191);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane);GridBagLayout gbl_contentPane = new GridBagLayout();gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0, 0, 0};gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0};gbl_contentPane.columnWeights = new double[]{1.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};contentPane.setLayout(gbl_contentPane);textField = new JTextField();GridBagConstraints gbc_textField = new GridBagConstraints();gbc_textField.gridwidth = 5;gbc_textField.insets = new Insets(0, 0, 5, 0);gbc_textField.fill = GridBagConstraints.HORIZONTAL;gbc_textField.gridx = 0;gbc_textField.gridy = 0;contentPane.add(textField, gbc_textField);textField.setColumns(10);//初始化成员变量operand1=0;operand2=0;operator = new String("#");express = new String();JButton btnNewButton = new JButton("0");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "0";InputOperand(express);}});GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); gbc_btnNewButton.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton.gridx = 0;gbc_btnNewButton.gridy = 1;contentPane.add(btnNewButton, gbc_btnNewButton);JButton btnNewButton_1 = new JButton("1");btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "1";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints(); gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_1.gridx = 1;gbc_btnNewButton_1.gridy = 1;contentPane.add(btnNewButton_1, gbc_btnNewButton_1);JButton btnNewButton_2 = new JButton("2");btnNewButton_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "2";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints(); gbc_btnNewButton_2.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_2.gridx = 2;gbc_btnNewButton_2.gridy = 1;contentPane.add(btnNewButton_2, gbc_btnNewButton_2);JButton btnNewButton_3 = new JButton("3");btnNewButton_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "3";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_3 = new GridBagConstraints(); gbc_btnNewButton_3.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_3.gridx = 3;gbc_btnNewButton_3.gridy = 1;contentPane.add(btnNewButton_3, gbc_btnNewButton_3);JButton btnNewButton_4 = new JButton("4");btnNewButton_4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "4";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_4 = new GridBagConstraints(); gbc_btnNewButton_4.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_4.gridx = 4;gbc_btnNewButton_4.gridy = 1;contentPane.add(btnNewButton_4, gbc_btnNewButton_4);JButton btnNewButton_5 = new JButton("5");btnNewButton_5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "5";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_5 = new GridBagConstraints(); gbc_btnNewButton_5.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_5.gridx = 0;gbc_btnNewButton_5.gridy = 2;contentPane.add(btnNewButton_5, gbc_btnNewButton_5);JButton btnNewButton_6 = new JButton("6");btnNewButton_6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "6";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_6 = new GridBagConstraints(); gbc_btnNewButton_6.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_6.gridx = 1;gbc_btnNewButton_6.gridy = 2;contentPane.add(btnNewButton_6, gbc_btnNewButton_6);JButton btnNewButton_7 = new JButton("7");btnNewButton_7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "7";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_7 = new GridBagConstraints(); gbc_btnNewButton_7.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_7.gridx = 2;gbc_btnNewButton_7.gridy = 2;contentPane.add(btnNewButton_7, gbc_btnNewButton_7);JButton btnNewButton_8 = new JButton("8");btnNewButton_8.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "8";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_8 = new GridBagConstraints(); gbc_btnNewButton_8.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_8.gridx = 3;gbc_btnNewButton_8.gridy = 2;contentPane.add(btnNewButton_8, gbc_btnNewButton_8);JButton btnNewButton_9 = new JButton("9");btnNewButton_9.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {express += "9";InputOperand(express);}});GridBagConstraints gbc_btnNewButton_9 = new GridBagConstraints(); gbc_btnNewButton_9.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_9.gridx = 4;gbc_btnNewButton_9.gridy = 2;contentPane.add(btnNewButton_9, gbc_btnNewButton_9);JButton btnNewButton_10 = new JButton("+");btnNewButton_10.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "+";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_10 = new GridBagConstraints(); gbc_btnNewButton_10.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_10.gridx = 0;gbc_btnNewButton_10.gridy = 3;contentPane.add(btnNewButton_10, gbc_btnNewButton_10);JButton btnNewButton_11 = new JButton("-");btnNewButton_11.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "-";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_11 = new GridBagConstraints(); gbc_btnNewButton_11.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_11.gridx = 1;gbc_btnNewButton_11.gridy = 3;contentPane.add(btnNewButton_11, gbc_btnNewButton_11);JButton btnNewButton_12 = new JButton("*");btnNewButton_12.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "*";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_12 = new GridBagConstraints(); gbc_btnNewButton_12.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_12.gridx = 2;gbc_btnNewButton_12.gridy = 3;contentPane.add(btnNewButton_12, gbc_btnNewButton_12);JButton btnNewButton_13 = new JButton("/");btnNewButton_13.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "/";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_13 = new GridBagConstraints(); gbc_btnNewButton_13.insets = new Insets(0, 0, 5, 5);gbc_btnNewButton_13.gridx = 3;gbc_btnNewButton_13.gridy = 3;contentPane.add(btnNewButton_13, gbc_btnNewButton_13);JButton btnNewButton_14 = new JButton("%");btnNewButton_14.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {operator = "%";express = "";textField.setText("");}});GridBagConstraints gbc_btnNewButton_14 = new GridBagConstraints(); gbc_btnNewButton_14.insets = new Insets(0, 0, 5, 0);gbc_btnNewButton_14.gridx = 4;gbc_btnNewButton_14.gridy = 3;contentPane.add(btnNewButton_14, gbc_btnNewButton_14);JButton btnNewButton_16 = new JButton(".");btnNewButton_16.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//数字中不含小数点if(!express.contains(".")){express += ".";}}});GridBagConstraints gbc_btnNewButton_16 = new GridBagConstraints();gbc_btnNewButton_16.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_16.gridx = 0;gbc_btnNewButton_16.gridy = 4;contentPane.add(btnNewButton_16, gbc_btnNewButton_16); JButton btnNewButton_17 = new JButton("="); btnNewButton_17.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {double result=0;if(operator.equals("#")){textField.setText("");}else{if(operator.equals("+"))result = operand1 + operand2;if(operator.equals("-"))result = operand1 - operand2;if(operator.equals("*"))result = operand1 * operand2;if(operator.equals("/"))result = operand1 / operand2;if(operator.equals("%"))result = (int)operand1 % (int)operand2;textField.setText(String.valueOf(result));}ResetAll();}});GridBagConstraints gbc_btnNewButton_17 = new GridBagConstraints(); gbc_btnNewButton_17.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_17.gridx = 1;gbc_btnNewButton_17.gridy = 4;contentPane.add(btnNewButton_17, gbc_btnNewButton_17);JButton btnNewButton_15 = new JButton("CE");btnNewButton_15.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {ResetAll();textField.setText("");}});GridBagConstraints gbc_btnNewButton_15 = new GridBagConstraints(); gbc_btnNewButton_15.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_15.gridx = 2;gbc_btnNewButton_15.gridy = 4;contentPane.add(btnNewButton_15, gbc_btnNewButton_15);JButton btnNewButton_18 = new JButton("\u9000\u683C"); btnNewButton_18.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(express.length()==0 || express.equals("")){ResetAll();textField.setText("");}if(express.length()>0){express = express.substring(0, express.length()-1);textField.setText(express);try{if(operator.equals("#")){operand1 = Double.parseDouble(express);}else{operand2 = Double.parseDouble(express);}}catch(NumberFormatException ep){System.out.println(ep.getMessage());}}}});GridBagConstraints gbc_btnNewButton_18 = new GridBagConstraints(); gbc_btnNewButton_18.gridwidth = 2;gbc_btnNewButton_18.insets = new Insets(0, 0, 0, 5);gbc_btnNewButton_18.gridx = 3;gbc_btnNewButton_18.gridy = 4;contentPane.add(btnNewButton_18, gbc_btnNewButton_18);}//鼠标单击输入数字,给某个操作数变量public void InputOperand(String datastr){ double m=0;try{m = Double.parseDouble(datastr);}catch(NumberFormatException ep){ System.out.println(ep.getMessage());}if(operator.equals("#")){operand1 = m;}else{operand2 = m;}textField.setText(String.valueOf(m));}//完成一次计算后,清空操作数public void ResetAll(){operand1=0;operand2=0;operator="#";express="";}}。
JA V A程序设计课程设计班级:计算机09-1班姓名:姜浩学号:0901051705一、设计题目参考Windows附件中的计算器,使用Java语言设计并实现一个简单的计算器。
(界面使用A WT或SWING)二、实现功能该计算器可以实现人们计算所需要的基本要求,如基本操作:加、减、乘、除,经常用到的三角函数:sin,cos,tan,以及某些运算需要的求平方,开方,求倒数,求log数,求阶乘n!。
具体功能描述如下:1、加减乘数运算:通过计算器界面可以输入要求的两个数,通过“+”“—”“*”“/”按键可以实现两个数的加减乘除,代码如下:public void count(double x){if(lastCommand.equals("+")) result+=x;else if(lastCommand.equals("-")) result-=x;else if(lastCommand.equals("*")) result*=x;else if(lastCommand.equals("/")) result/=x;else if(lastCommand.equals("=")){result=x;mid=false;}else{result+=0;}text.setText(Double.toString(result));}}2、三角函数运算:通过计算器界面输入要求三角函数的数值,然后通过“sin”“cos”“tan”按键可以实现求这个数的对应的三角函数值,实现代码如下:if(thisCommand.equals("tan")){result=Math.tan(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("sin")){result=Math.sin(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("cos")){result=Math.cos(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}3、求平方,开方操作:通过计算器界面输入一个数,按键“sqar”“sqrt”可实现该数的平方和开方操作,实现代码如下:if(thisCommand.equals("sqar")){result=Double.parseDouble(text.getText())*Double.parseDouble(text.getTe xt());text.setText(Double.toString(result));}if(thisCommand.equals("sqrt")){double t;t=Double.parseDouble(text.getText());if(t<0)text.setText("根号下不能小于0");else{result=Math.sqrt(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}4、求倒数,ln,阶乘n!操作:通过计算器界面输入一个数,按键“1/x”“ln”“n!”可实现求该数的倒数和ln值的操作,实现代码如下:if(thisCommand.equals("1/x")){double t;t=Double.parseDouble(text.getText());if(t==0)text.setText("除数不能为0");else{result=1/Double.parseDouble(text.getText());text.setText(Double.toString(result));}}if(thisCommand.equals("ln")){double t;t=Double.parseDouble(text.getText());if(t<=0)text.setText("ln下的数不能为小于等于0");else{result=Math.log(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("n!")){if(Double.parseDouble(text.getText())==0){result=1;}else{result=1;double t=Double.parseDouble(text.getText());for(int i=0;i<Double.parseDouble(text.getText());i++){result=result*t;t=t-1;}text.setText(Double.toString(result));}}三、系统的UML类图四、系统实现的核心代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class calculator {public static void main(String[] args){calculatorJFrame frame=new calculatorJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setV isible(true);}}class calculatorJFrame extends JFrame{private JTextField text;public calculatorJFrame(){setTitle("标准计算器");setSize(320,220);Container contentPane=getContentPane();text=new JTextField();contentPane.add("Center",text);calculatorJPanel jp=new calculatorJPanel(text);contentPane.add("South",jp);}}class calculatorJPanel extends JPanel{private JTextField text;private boolean start;private boolean mid;private String lastCommand;private String thisCommand;private double result;public calculatorJPanel(JTextField text1){text=text1;this.setLayout(new GridLayout(5,5));result=0;start=true;mid=true;lastCommand="=";ActionListener insert=new InsertAction();ActionListener command=new CommandAction();JButtonadd("C",command);JButtonadd("n!",command);JButtonadd("1/x",command);JButtonadd("sqar",command);JButtonadd("ln",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+7),insert);JButtonadd("+",command);JButtonadd("sin",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+4),insert);JButtonadd("-",command);JButtonadd("cos",command);for(int i=0;i<3;i++)JButtonadd(Integer.toString(i+1),insert);JButtonadd("*",command);JButtonadd("tan",command);JButtonadd("0",insert);JButtonadd(".",insert);JButtonadd("sqrt",command);JButtonadd("/",command);JButtonadd("=",command);}public void JButtonadd(String number,ActionListener Action) {JButton jb=new JButton(number);jb.addActionListener(Action);this.add(jb);}private class InsertAction implements ActionListener{public void actionPerformed(ActionEvent event){String input=event.getActionCommand();if(start){text.setText("");start=false;}text.setText(text.getText()+input);}}private class CommandAction implements ActionListener {public void actionPerformed(ActionEvent evt){String command=evt.getActionCommand();thisCommand=command;if(thisCommand.equals("C")){result =0;text.setText(Double.toString(result));lastCommand="";}if(thisCommand.equals("n!")){if(Double.parseDouble(text.getText())==0){result=1;}else{result=1;double t=Double.parseDouble(text.getText());for(int i=0;i<Double.parseDouble(text.getText());i++){result=result*t;t=t-1;}text.setText(Double.toString(result));}}if(thisCommand.equals("1/x")){double t;t=Double.parseDouble(text.getText());if(t==0)text.setText("除数不能为0");else{result=1/Double.parseDouble(text.getText());text.setText(Double.toString(result));}}if(thisCommand.equals("sqar")){result=Double.parseDouble(text.getText())*Double.parseDouble(text.getText());text.setText(Double.toString(result));}if(thisCommand.equals("ln")){double t;t=Double.parseDouble(text.getText());if(t<=0)text.setText("ln下的数不能为小于等于0");else{result=Math.log(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("tan")){result=Math.tan(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("sqrt")){double t;t=Double.parseDouble(text.getText());if(t<0)text.setText("根号下不能小于0");else{result=Math.sqrt(Double.parseDouble(text.getText()));text.setText(Double.toString(result));}}if(thisCommand.equals("sin")){result=Math.sin(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(thisCommand.equals("cos")){result=Math.cos(Double.parseDouble(text.getText()));text.setText(Double.toString(result));mid=false;}if(start&&mid){if(command.equals("-")){text.setText(command);start=false;}elselastCommand=command;}else{count(Double.parseDouble(text.getText()));if(command.equals("C")){mid=true;lastCommand="=";}else if(command.equals("back"))lastCommand="=";elselastCommand=command;start=true;}}}public void count(double x){if(lastCommand.equals("+")) result+=x;else if(lastCommand.equals("-")) result-=x;else if(lastCommand.equals("*")) result*=x;else if(lastCommand.equals("/")) result/=x;else if(lastCommand.equals("=")){result=x;mid=false;}else{result+=0;}text.setText(Double.toString(result));}}。
java 计算器(模仿windows自带计算器的功能和界面)import java.awt.BorderLayout;import java.awt.Color;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;/**•一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。
但还不支持键盘操作。
•/•public class Calculator extends JFrame implements ActionListener { • /** 计算器上的键的显示名字/• private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",•••"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };/计算器上的功能键的显示名字 */private final String[] COMMAND = { "Backspace", "CE", "C" };/计算器左边的M的显示名字/private final String[] M = { " ", "MC", "MR", "MS", "M+" };/** 计算器上键的按钮/private JButton keys[] = new JButton[KEYS.length];/计算器上的功能键的按钮 */private JButton commands[] = new JButton[COMMAND.length];/计算器左边的M的按钮/private JButton m[] = new JButton[M.length];/** 计算结果文本框/private JTextField resultText = new JTextField("0");// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true;// 计算的中间结果。
JAVA编写的计算器源代码// Calculator.javaimport javax.swing.*; // 引入swing库import java.awt.*; // 引入awt库import java.awt.event.*; // 引入awt.event库public class Calculator extends JFrame implements ActionListener//定义按钮private JButton zero;private JButton one;private JButton two;private JButton three;private JButton four;private JButton five;private JButton six;private JButton seven;private JButton eight;private JButton nine;private JButton point;private JButton equal; private JButton plus; private JButton minus; private JButton multiply; private JButton divide; private JButton backspace; private JButton ac;private JButton ce;private JButton sqrt; private JButton sqr;private JButton plus_minus; private JButton delete; private JButton sin;private JButton cos;private JButton tan;private JButton log;private JButton nfactorial; private JButton cubic; private JButton coln;private JButton factorial;//定义文本框private JTextField resulttext;// 定义boolean变量boolean clrdisp = true; // 昵称确定是否清除计算器显示boolean isCalculate = false; // 是否可以执行计算// 定义String变量,用于存储操作符String optr;//定义存储第一个操作数double num1;//初始化构造函数public Calculato//设置布局setLayout(new BorderLayout();//创建面板JPanel northPanel = new JPanel(;JPanel centerPanel = new JPanel(;JPanel southPanel = new JPanel(;//设置面板布局northPanel.setLayout(new FlowLayout(); centerPanel.setLayout(new GridLayout(4, 5)); southPanel.setLayout(new FlowLayout();//设置计算器显示resulttext = new JTextField(28); northPanel.add(resulttext);resulttext.setEditable(false);//初始化按钮zero = new JButton("0");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");point = new JButton(".");equal = new JButton("=");plus = new JButton("+");minus = new JButton("-"); multiply = new JButton("*"); divide = new JButton("/"); backspace = new JButton("<-"); ac = new JButton("AC");ce = new JButton("CE");sqrt = new JButton("sqrt");sqr = new JButton("sqr");plus_minus = new JButton("+/-");。
标准型计算器(Java语言编写)下面的java源码是本人连续工作48小时的成果,也许对于高手来说这只是小菜一碟,但是如果你不是高手,我推荐你研究下面的程序。
程序中包含了Java反射机制、图形界面编程等一系列的知识运用。
研究完后你不一定会变成高手,但对于Java和C语言你都会有更深度的理解。
源码中的注释很详细。
○1建立java工程○2输入工程名○3新建一个包○4输入包名○5新建一个类○6输入类名以上步骤都是基础,会的可以略过。
源码:package three.num1;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Calculator extends JFrame implements ActionListener { /****/private static final long serialVersionUID = 1L;private JTextField text1;// 未实例化private JLabel lable_text;private JButton bt_backspace, bt_ce, bt_c;private JPanel gridpanel;private String str = "";private String str_note = " ";private char operator = '\0';private double data_before;private boolean equal_flag = false;public Calculator() {super("计算器");// 标题栏setBounds(100, 100, 198, 244); // 程序在屏幕上的显示位置(100,100),宽*高=300*233this.setResizable(false);this.getContentPane().setLayout(newFlowLayout(FlowLayout.RIGHT));lable_text = new JLabel(" ", JLabel.RIGHT);this.getContentPane().add(lable_text);text1 = new JTextField("0", 16); // 将文本框text1实例化,并设置文本框的长度text1.setHorizontalAlignment(JTextField.RIGHT); // 文字在文本框中从右边开始显示text1.setEditable(false); // 不可编辑this.getContentPane().add(text1);bt_backspace = new JButton("backspace");bt_backspace.setMargin(new Insets(2, 5, 2, 6));bt_ce = new JButton("CE"); // bt_ce.setMargin(newInsets(2,2,2,2));bt_c= new JButton("C"); // bt_c.setMargin(new Insets(2,2,2,2));this.getContentPane().add(bt_backspace);this.getContentPane().add(bt_ce);this.getContentPane().add(bt_c);bt_backspace.addActionListener(this);bt_ce.addActionListener(this);bt_c.addActionListener(this);keyboard(); // 调用keyboard()this.setVisible(true);}/*** 添加按钮 ***/public void keyboard() {String str[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%","1", "2", "3", "-", "1/X", "0", "+/-", ".", "+", "=" };gridpanel = new JPanel();gridpanel.setLayout(new GridLayout(4, 5, 9, 8));// 4行5列,水平间距9,垂直间距7this.getContentPane().add(gridpanel);JButton button[] = new JButton[str.length];for (int i = 0; i < button.length; i++) {button[i] = new JButton(str[i]);button[i].setMargin(new Insets(0, 0, 0, 0));button[i].setForeground(new Color(252, 51, 51));//button[i].setBackground(new//Color(131,95,56));gridpanel.add(button[i]);button[i].addActionListener(this); // 为按钮注册单击事件监听器}}/*** 实现监听器接口 ***/public void actionPerformed(ActionEvent e) {double data_after;String bt = e.getActionCommand();/*** 按0数字键 */if (bt == "0")// bt.equals("0"){if (equal_flag == false) {if (text1.getText().equals("0")) {return;} else {str += bt;text1.setText(str);}} else {equal_flag= false; // 添加这行代码使下次按数字键从if行执行,否则每次按0键都执行本行else语句,即str清空。
j a v a编写的简单的计算器程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN计算器项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。
项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动;1.Applet容器中组件的添加与设置,包括面板以及菜单的使用;2.容器中组件的布局管理;3.Java核心包中数组、数学计算类的使用;4.异常的处理;5.事件处理模型中的三类对象的使用:1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。
2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。
3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。
6.程序中事件处理的流程:1.计算流程的细化参考代码:import .*;import .*;import .*;importimportimportpublic class Calculatorimplements ActionListener { #############"); dd(panel);panel1 = new JPanel();panel2 = new JPanel();(new BorderLayout());键入计算的第一个数字。
\n");("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。
\n"); ("3. 键入计算的下一个数字。
\n");("4. 输入所有剩余的运算符和数字。
\n");("5. 单击“=”。
用JAVA编写计算器程序(模拟Windows计算器)import java.awt.*;import java.awt.event.*;public class Calculation extends WindowAdapter implements ActionListener{double dResult=0;double dNowInput=0;double dMemory;int n=0; //记载小数位数int nOperation=1; // 记录运算符类型int nBitsNum=0; //记录总共输入的位数boolean alreadyHaveDot=false; //已经有小数点?boolean keyAvailable=true;boolean alreadyClickedEqueal=false; //是否按下过"="?boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?Frame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;public void display(){f=new Frame("计算器");f.setSize(280,213);f.setLocation(200,200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);f.setLayout(new BorderLayout(3,3));p1=new Panel(new GridLayout(1,3,5,5)); //用于存放backspace,ce,c三键p2=new Panel(new GridLayout(4,5,5,5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整p3=new Panel(new GridLayout(5,1,5,5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整p4=new Panel(new FlowLayout()); //用于存放p1,p2p5=new Panel(new FlowLayout());p6=new Panel(new FlowLayout());p4.add(p1);p4.add(p2);tf1=new TextField(35); //存放显示区tf1.setText("0.");tf1.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);b1=new Button("1");b2=new Button("2");b3=new Button("3");b4=new Button("4");b5=new Button("5");b6=new Button("6");b7=new Button("7");b8=new Button("8");b9=new Button("9");b0=new Button("0");b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bDiv=new Button("/");bSqrt=new Button("sqrt"); bMulti=new Button("*"); bMinus=new Button("-"); bPercent=new Button("%"); bPlus=new Button("+"); bReciprocal=new Button("1/x"); bEqual=new Button("=");bDot=new Button("."); bNegative=new Button("+/-");bDiv.addActionListener(this); bSqrt.addActionListener(this);bMulti.addActionListener(this); bMinus.addActionListener(this); bPercent.addActionListener(this); bPlus.addActionListener(this); bReciprocal.addActionListener(this); bEqual.addActionListener(this); bDot.addActionListener(this); bNegative.addActionListener(this);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bSqrt);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bPercent);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bReciprocal);p2.add(b0);p2.add(bNegative);p2.add(bDot);p2.add(bPlus);p2.add(bEqual);bBackspace=new Button("Backspace"); bCE=new Button("CE");bC=new Button("C");bBackspace.addActionListener(this); bCE.addActionListener(this);bC.addActionListener(this);p1.add(bBackspace);p1.add(bCE);p1.add(bC);tf2=new TextField(2);tf2.setEnabled(false);tf2.setBackground(Color.LIGHT_GRAY); bMC=new Button("MC");bMR=new Button("MR");bMS=new Button("MS");bM=new Button("M+");bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(this);p6.add(tf2);p3.add(p6);p3.add(bMC);p3.add(bMR);p3.add(bMS);p3.add(bM);f.setVisible(true);f.addWindowListener(this);}public void actionPerformed(ActionEvent e){//key 0 to 9if(this.keyAvailable && e.getActionCommand().length()==1 && e.getActionComman d().compareTo("0")>=0 && e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand()); else{double temp=Double.parseDouble(e.getActionCommand());for(int i=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}// key dotif(this.keyAvailable && e.getActionCommand()=="."){if(this.alreadyHaveDot==false){this.nBitsNum++;this.alreadyHaveDot=true;this.n=-1;}}//key "+","-","*","/"if(this.keyAvailable && e.getActionCommand()=="+" || e.getActionCommand()=="-" || e.getActionCommand()=="*" || e.getActionCommand()=="/"){if(this.alreadyClickedEqueal){this.dNowInput=this.dResult;this.isTempNowInput=true;}else{switch(this.nOperation){case 1: this.dResult+=this.dNowInput; break;case 2: this.dResult-=this.dNowInput; break;case 3: this.dResult*=this.dNowInput; break;case 4:{if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;}else this.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult)); this.dNowInput=0;}if(e.getActionCommand()=="+"){this.nOperation=1;}if(e.getActionCommand()=="-"){this.nOperation=2;}if(e.getActionCommand()=="*"){this.nOperation=3;}if(e.getActionCommand()=="/"){this.nOperation=4;}this.nBitsNum=0;this.alreadyClickedEqueal=false;}// key "+/-"if(this.keyAvailable && e.getActionCommand()=="+/-") {this.dNowInput=0-this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}// key "C"if(e.getActionCommand()=="C"){this.nBitsNum=0;this.dResult=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;this.alreadyClickedEqueal=false;tf1.setText("0.");}// key "CE"if(e.getActionCommand()=="CE"){this.nBitsNum=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;tf1.setText("0.");}// key "sqrt"if(this.keyAvailable && e.getActionCommand()=="sqrt") {if(this.alreadyClickedEqueal){if(this.dResult>=0){this.dResult=Math.sqrt(this.dResult);tf1.setText(Double.toString(this.dResult));}else{tf1.setText("函数输入无效");this.keyAvailable=false;}}else{if(this.dNowInput>=0){this.dNowInput=Math.sqrt(this.dNowInput);tf1.setText(Double.toString(this.dNowInput));}else{tf1.setText("函数输入无效");this.keyAvailable=false;}}// key "1/x"if(this.keyAvailable && e.getActionCommand()=="1/x") {if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;}else{this.dNowInput=1/this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}}// key "="if(this.keyAvailable && e.getActionCommand()=="=") {this.alreadyClickedEqueal=true;switch(this.nOperation){case 1: this.dResult+=this.dNowInput; break;case 2: this.dResult-=this.dNowInput; break;case 3: this.dResult*=this.dNowInput; break;case 4:{if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;else this.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult)); }// key "MS"if(this.keyAvailable && e.getActionCommand()=="MS"){this.dMemory=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");}// key "MC"if(this.keyAvailable && e.getActionCommand()=="MC"){this.dMemory=0;tf2.setText("");}// key "MR"if(this.keyAvailable && e.getActionCommand()=="MR"){this.dNowInput=this.dMemory;tf1.setText(Double.toString(this.dNowInput));}// key "M+"if(this.keyAvailable && e.getActionCommand()=="M+"){this.dMemory+=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");else tf2.setText("");}// key "%"if(this.keyAvailable && e.getActionCommand()=="%"){this.dNowInput=(this.dResult*this.dNowInput)/100;tf1.setText(Double.toString(this.dNowInput));}// key "Backspace"if(this.keyAvailable && e.getActionCommand()=="Backspace") {if(!this.alreadyClickedEqueal){if(this.dNowInput!=0){if(this.alreadyHaveDot){if(this.n==-1){this.alreadyHaveDot=false;this.n=0;}else{String str,str1;str=tf1.getText();str1=str.substring(0,this.nBitsNum-1);this.nBitsNum--;this.n++;this.dNowInput=Double.parseDouble(str1);tf1.setText(Double.toString(this.dNowInput));}}else{int temp;temp=(int)(this.dNowInput/10);this.dNowInput=(double)temp;tf1.setText(Double.toString(this.dNowInput));}}}}}public static void main(String args[]){Calculation cal=new Calculation();cal.display();}public void windowClosing(WindowEvent e){System.exit(0);}}。