java简单计算器.docx
- 文档编号:30348445
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:21
- 大小:19.08KB
java简单计算器.docx
《java简单计算器.docx》由会员分享,可在线阅读,更多相关《java简单计算器.docx(21页珍藏版)》请在冰豆网上搜索。
java简单计算器
源文件一:
calculation.java
importjava.util.LinkedList;
publicclasscalculation{
intermediaryitmd=intermediary.getIntermediary();
LinkedList
OperationFactoryopf=newOperationFactory();
publicvoidcalculat(){
doubleresult=0;
intflag=0;//标志是否有括号,1表示有括号
//n记录最后一个正括号的位置,i记录第一个反括号的位置
for(inti=0,n=0;i System.out.print(fomula.get(i));//输出集合元素 if(fomula.get(i).equals("(")){ while(fomula.get(i).equals("(")){ i++; } n=i; i++; while(! fomula.get(i).equals(")")){ i++; } simpCalculat(n,i-1); fomula.remove(n+1); fomula.remove(n-1); result=Double.valueOf(fomula.get(n-1)); i=-1; n=0; } } if(fomula.size()<3){ if(! (fomula.get(0)instanceofString)) result=Double.valueOf(fomula.get(0)); else result=Double.valueOf(fomula.get (1)); itmd.setResult(result); }else{ result=simpCalculat(0,fomula.size()-1); itmd.setResult(result); } } privatedoublesimpCalculat(intn,intm){ doubleresult=0; //for(inti=0,n=0;i while(n //if(fomula.get(n+1)instanceofString){ for(inti=n;i if(fomula.get(i).equals("*")||fomula.get(i).equals("/")){ Operationop=opf.creatOperate((String)fomula.get(i)); op.setNumber(Double.valueOf(fomula.get(i-1)),Double.valueOf(fomula.get(i+1))); result=op.getResult(); fomula.remove(i); fomula.remove(i); fomula.set(i-1,((Double)result).toString()); m=m-2; } } for(inti=n;i Operationop=opf.creatOperate((String)fomula.get(n+1)); op.setNumber(Double.valueOf(fomula.get(n)),Double.valueOf(fomula.get(n+2))); result=op.getResult(); fomula.remove(n+1); fomula.remove(n+1); fomula.set(n,((Double)result).toString()); m=m-2; } } returnresult; } } 源文件二: intermediary.java importjava.util.LinkedList; /** *中介类: *从前台接受输入的数据,并传入后台计算 *将后台计算好的结果传入前台 *@authorAdministrator * */ publicclassintermediary{ privatestaticintermediaryitmd=newintermediary(); privateLinkedList privatedoubleresult;//计算结果 privateintermediary(){ } staticintermediarygetIntermediary(){ returnitmd; } protectedLinkedList intk=0;//运算数与运算符的个数和 intbegin=0,end=0; for(inti=0;i intflag=0;//等于一时标志找到第一个数位 Strings=fomula.get(i); if(s.matches("[0-9.]")&&flag==0){ begin=i; flag=1; k++; } if(! s.matches("[0-9.]")&&flag==1){ doubled1=0,d2=0; intflag2=0;//等于一时表示遇到小数点 for(intn=begin;n inta=0;//记录小数点的位置 if(s==".") flag2=1; if(flag2! =1){ d1=d1+Integer.valueOf(fomula.get(n))*Math.pow(10,i); a=i; } else d2=d2+Integer.valueOf(fomula.get(n))*Math.pow(0.1,i-a); } Doubled=d1+d2; fomula.set(k,d.toString()); k=k+2; for(intnum=k;num fomula.remove(k); } k++; i=k; } } returnfomula; } /* for(inti=0;i try{ Strings=fomula.get(i); if(s.matches("[0-9.]")) if(! s.matches("[0-9.]")){ doubled1=0,d2=0; intflag=0; for(intn=0;n inta=0; if(s==".") flag=1; if(flag! =1){ d1=d1+Integer.valueOf(fomula.get(n))*Math.pow(10,i); a=i; } else d2=d2+Integer.valueOf(fomula.get(n))*Math.pow(0.1,i-a); } Doubled=d1+d2; fomula.set(k,d.toString()); k=k+2; for(intnum=k;num fomula.remove(k); } } else{ k++; } i=k; }catch(Exceptione){ } } */ protectedvoidsetFomula(Strings){ fomula.add(s); } protecteddoublegetResult(){ returnresult; } protectedvoidsetResult(doubleresult){ this.result=result; } } 源文件三: Operation.java publicabstractclassOperation{ protecteddoublenumberA; protecteddoublenumberB; protectedvoidsetNumber(DoublenumberA,DoublenumberB){ this.numberA=numberA; this.numberB=numberB; } publicabstractdoublegetResult(); } 源文件四: OperationAdd.java publicclassOperationAddextendsOperation{ @Override publicdoublegetResult(){ //TODOAuto-generatedmethodstub doubleresult=0; result=numberA+numberB; returnresult; } } 源文件五: OperationDiv.java publicclassOperationDivextendsOperation{ @Override publicdoublegetResult(){ //TODOAuto-generatedmethodstub try{ doubleresult=0; result=numberA/numberB; returnresult; }catch(ArithmeticExceptione){ System.out.println("算术异常"); return0; } } } 源文件六: OperationFactory.java publicclassOperationFactory{ publicOperationcreatOperate(Stringobject){ Operationoper=null; switch(object){ case"+": oper=newOperationAdd();break; case"-": oper=newOperationSub();break; case"*": oper=newOperationMul();break; case"/": oper=newOperationDiv();break; default: System.out.println("该计算器不具备此种运算的能力"); } returnoper; } } 源文件七: OperationMul.java publicclassOperationMulextendsOperation{ @Override publicdoublegetResult(){ //TODOAuto-generatedmethodstub doubleresult=0; result=numberA*numberB; returnresult; } } 源文件八: OperationSub.java publicclassOperationSubextendsOperation{ @Override publicdoublegetResult(){ //TODOAuto-generatedmethodstub doubleresult=0; result=numberA-numberB; returnresult; } } 源文件九: winder.java importjava.awt.BorderLayout; importjava.awt.EventQueue; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.border.EmptyBorder; importjavax.swing.JButton; importjavax.swing.JTextField; importjava.awt.event.ActionListener; importjava.awt.event.ActionEvent; importjava.awt.event.KeyAdapter; importjava.awt.event.KeyEvent; importjava.awt.event.KeyListener; importjava.util.ArrayList; importjava.util.LinkedList; publicclasswinderextendsJFrame{ privateJPanelcontentPane; privateJTextFieldtextField; privateStrings=""; /** *Launchtheapplication. */ publicstaticvoidmain(String[]args){ EventQueue.invokeLater(newRunnable(){ publicvoidrun(){ try{ winderframe=newwinder(); //添加键盘事件 frame.addKeyListener(newKeyListener() { publicvoidkeyPressed(KeyEvente){ System.out.println(e.getKeyChar()); } @Override publicvoidkeyReleased(KeyEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidkeyTyped(KeyEventarg0){ //TODOAuto-generatedmethodstub } }); frame.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } } }); } /** *Createtheframe. */ publicwinder(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,276,338); contentPane=newJPanel(); contentPane.setBorder(newEmptyBorder(5,5,5,5)); setContentPane(contentPane); contentPane.setLayout(null); JButtonbtnNewButton=newJButton("1"); btnNewButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); btnNewButton.setBounds(70,68,50,30); contentPane.add(btnNewButton); JButtonbutton=newJButton("/"); button.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button.setBounds(10,188,50,30); contentPane.add(button); JButtonbutton_1=newJButton("2"); button_1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button_1.setBounds(130,68,50,30); contentPane.add(button_1); JButtonbutton_2=newJButton("3"); button_2.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button_2.setBounds(190,68,50,30); contentPane.add(button_2); JButtonbutton_3=newJButton("+"); button_3.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button_3.setBounds(10,68,50,30); contentPane.add(button_3); JButtonbutton_4=newJButton("4"); button_4.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button_4.setBounds(70,108,50,30); contentPane.add(button_4); JButtonbutton_5=newJButton("5"); button_5.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringi=e.getActionCommand();//得到按钮上的字符 s=s+i; intermediary.getIntermediary().setFomula(i); textField.setText(s); } }); button_5.setBounds(130,108,50,30); contentPane.add(button_5); JButtonbutton_6=newJBu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 简单 计算器