首页 java编写的计算器

java编写的计算器

举报
开通vip

java编写的计算器java编写的计算器 package Calculator; import java.awt.*; import javax.swing.*; import java.awt.Component.*; import java.awt.TextComponent.*; import java.awt.event.*; //数字按钮 class NumBtn extends JButton { int number; Insets insets=new Insets(1,1,1,1); public ...

java编写的计算器
java编写的计算器 package Calculator; import java.awt.*; import javax.swing.*; import java.awt.Component.*; import java.awt.TextComponent.*; import java.awt.event.*; //数字按钮 class NumBtn extends JButton { int number; Insets insets=new Insets(1,1,1,1); public NumBtn(int i) { super(""+i); number=i; setMargin(insets); } public int getNum() { return number; } } //运算按钮 class OperBtn extends JButton { Insets insets=new Insets(1,1,1,1); String operator; public OperBtn(String str) { super(str); operator=str; setMargin(insets); } public String getOper() { return operator; } } //记忆按钮 class FunBtn extends JButton { Insets insets=new Insets(1,1,1,1); String function; public FunBtn(String str) { super(str); function=str; setMargin(insets); } public String getFun() { return function; } } //数学按钮 class MathBtn extends JButton { Insets insets=new Insets(1,1,1,1); String math; public MathBtn(String str) { super(str); math=str; setMargin(insets); } public String getMath() { return math; } } public class Calculator extends JFrame implements ActionListener { Insets insets=new Insets(1,1,1,1); NumBtn numbtn[]; OperBtn operbtn[]; FunBtn funbtn[]; MathBtn mathbtn[]; String oper[]={"/","*","-","+"}; String fun[]={"MC","MR","MS","M+"}; String math[]={"sqrt","%","1/x","="}; JButton potbtn,pmbtn; JPanel panel,part1,part2,part3; JTextField resulttf,memtf; JButton backspace; JButton ce; JButton c; boolean isNew=true; boolean isNextNum=false; String newResult=null; String newOperator=null; String saveValue=null; boolean isMem; Calculator() { super("计算器"); //第一部分:显示结果 part1=new JPanel(); FlowLayout flowLayout1=new FlowLayout(); flowLayout1.setVgap(0); part1.setLayout(flowLayout1); resulttf=new JTextField(22); resulttf.setEditable(false); resulttf.setHorizontalAlignment(JTextField.TRAILING); resulttf.setEnabled(true); part1.add(resulttf); part1.setBounds(10,25,250,45); //第二部分:标记是否有存储值以及backspace,ce,c part2=new JPanel(); FlowLayout flowLayout2=new FlowLayout(FlowLayout.LEFT,10,6); flowLayout2.setVgap(0); part2.setLayout(flowLayout2); memtf=new JTextField(2); memtf.setEditable(false); memtf.setHorizontalAlignment(JTextField.CENTER); memtf.setVisible(true); backspace=new JButton("Backspace"); backspace.addActionListener(this); ce=new JButton("CE"); ce.addActionListener(this); c=new JButton("C"); c.addActionListener(this); part2.add(memtf); part2.add(backspace); part2.add(ce); part2.add(c); part2.setBounds(3,70,300,35); part2.setVisible(true); //第三部分:各个按钮 part3=new JPanel(); part3.setVisible(true); part3.setBounds(10,105,250,180); part3.setLayout(new GridLayout(4,6,5,5)); numbtn=new NumBtn[10]; for(int i=0;i<10;i++) { numbtn[i]=new NumBtn(i); numbtn[i].addActionListener(this); } operbtn=new OperBtn[4]; for(int i=0;i<4;i++) { operbtn[i]=new OperBtn(oper[i]); operbtn[i].addActionListener(this); } funbtn=new FunBtn[4]; for (int i=0;i<4;i++) { funbtn[i]=new FunBtn(fun[i]); funbtn[i].addActionListener(this); } mathbtn=new MathBtn[4]; for(int i=0;i<4;i++) { mathbtn[i]=new MathBtn(math[i]); mathbtn[i].addActionListener(this); } potbtn=new JButton("."); potbtn.addActionListener(this); pmbtn=new JButton("+/-"); pmbtn.addActionListener(this); potbtn.setMargin(insets); pmbtn.setMargin(insets); part3.add(funbtn[0]); part3.add(numbtn[7]); part3.add(numbtn[8]); part3.add(numbtn[9]); part3.add(operbtn[0]); part3.add(mathbtn[0]); part3.add(funbtn[1]); part3.add(numbtn[4]); part3.add(numbtn[5]); part3.add(numbtn[6]); part3.add(operbtn[1]); part3.add(mathbtn[1]); part3.add(funbtn[2]); part3.add(numbtn[1]); part3.add(numbtn[2]); part3.add(numbtn[3]); part3.add(operbtn[2]); part3.add(mathbtn[2]); part3.add(funbtn[3]); part3.add(numbtn[0]); part3.add(pmbtn); part3.add(potbtn); part3.add(operbtn[3]); part3.add(mathbtn[3]); //将各个部分放置于一个面板 panel=new JPanel(); panel.setLayout(null); panel.add(part1); panel.add(part2); panel.add(part3); panel.setVisible(true); //主框架的设置 setLayout(new BorderLayout()); getContentPane().add(panel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(276,325); setLocation(500,200); setVisible(true); setResizable(false); } public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof NumBtn) { NumBtn bt=(NumBtn)e.getSource(); if(!isNew) resulttf.setText(resulttf.getText()+bt.getNum()); else resulttf.setText(""+bt.getNum()); isNew=false; isNextNum=true; } else if(e.getSource() instanceof OperBtn) { OperBtn bt=(OperBtn)e.getSource(); if((resulttf.getText()).equals("")) return; if((newOperator!=null)&&(isNextNum==true)) { try { double num1=Double.parseDouble(newResult); double num2=Double.parseDouble(resulttf.getText()); double res=0; if(newOperator.equals("+")) res=num1+num2; else if(newOperator.equals("-")) res=num1-num2; else if(newOperator.equals("*")) res=num1*num2; else if(newOperator.equals("/")) res=num1/num2; resulttf.setText(""+res); isNextNum=false; }catch(NumberFormatException e1){} catch(NullPointerException e2){} } newOperator=bt.getOper(); newResult=resulttf.getText(); if(isNextNum) resulttf.setText(""); isNew=true; isNextNum=false; } else if(e.getSource()==mathbtn[3]) { if(isNextNum==true) { try { double num1=Double.parseDouble(newResult); double num2=Double.parseDouble(resulttf.getText()); double res=0; if(newOperator.equals("+")) res=num1+num2; else if(newOperator.equals("-")) res=num1-num2; else if(newOperator.equals("*")) res=num1*num2; else if(newOperator.equals("/")) res=num1/num2; resulttf.setText(""+res); }catch(NumberFormatException e1){} catch(NullPointerException e2){} } newOperator=null; newResult=null; isNew=true; isNextNum=false; } else if(e.getSource()==potbtn) { if(resulttf.getText().indexOf(".")!=-1) return; if(!isNew&&resulttf.getText()!="") resulttf.setText(resulttf.getText()+"."); else resulttf.setText("0."); isNew=false; isNextNum=true; } else if(e.getSource()==pmbtn) { if(resulttf.getText().indexOf("-")!=-1) resulttf.setText(""+Math.abs(Double.parseDouble(resulttf.getText()))); else if((resulttf.getText()!="")&&(!isNew)) resulttf.setText("-"+resulttf.getText()); else { resulttf.setText("-"); isNew=false; } } else if(e.getSource()==funbtn[2]) { if(resulttf.getText()!="") { saveValue=resulttf.getText(); memtf.setText("M"); isMem=true; } } else if(e.getSource()==funbtn[1]) { if(isMem) { resulttf.setText(saveValue); isNextNum=true; } } else if(e.getSource()==funbtn[0]) { memtf.setText(""); isMem=false; } else if(e.getSource()==funbtn[3]) { if(resulttf.getText()!=null) { double num1=Double.parseDouble(resulttf.getText()); double num2=Double.parseDouble(saveValue); double res; res=num1+num2; if(isMem) { resulttf.setText(""+res); } } } else if(e.getSource()==mathbtn[0]) { if(!(resulttf.getText().equalsIgnoreCase("-"))&&(Double.parseDouble(resulttf.getText())>=0) ) { double num1=Double.parseDouble(resulttf.getText()); num1=Math.sqrt(num1); resulttf.setText(""+num1); } } else if(e.getSource()==mathbtn[1]) { if((resulttf.getText()!=null)&&!(resulttf.getText().equalsIgnoreCase("-"))) { double num1=Double.parseDouble(resulttf.getText()); num1=num1/100; resulttf.setText(""+num1); } } else if(e.getSource()==mathbtn[2]) { if((resulttf.getText()!=null)&&!(resulttf.getText().equalsIgnoreCase("-"))) { double num1=Double.parseDouble(resulttf.getText()); num1=1/num1; resulttf.setText(""+num1); } } else if((e.getSource()==backspace)||(e.getSource()==ce)) { if(resulttf.getText()!=null) { String backString; int i=resulttf.getText().length()-1; backString=resulttf.getText().substring(0,i); resulttf.setText(backString); } } else if(e.getSource()==c) { resulttf.setText(""); } } public static void main(String args[]) { new Calculator(); } }
本文档为【java编写的计算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:53KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-06
浏览量:21