java简单计算器.docx

上传人:b****5 文档编号:30348445 上传时间:2023-08-13 格式:DOCX 页数:21 大小:19.08KB
下载 相关 举报
java简单计算器.docx_第1页
第1页 / 共21页
java简单计算器.docx_第2页
第2页 / 共21页
java简单计算器.docx_第3页
第3页 / 共21页
java简单计算器.docx_第4页
第4页 / 共21页
java简单计算器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

java简单计算器.docx

《java简单计算器.docx》由会员分享,可在线阅读,更多相关《java简单计算器.docx(21页珍藏版)》请在冰豆网上搜索。

java简单计算器.docx

java简单计算器

源文件一:

calculation.java

importjava.util.LinkedList;

 

publicclasscalculation{

intermediaryitmd=intermediary.getIntermediary();

LinkedListfomula=itmd.getFomula();

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();

privateLinkedListfomula=newLinkedList();//算式集合

privatedoubleresult;//计算结果

privateintermediary(){

}

staticintermediarygetIntermediary(){

returnitmd;

}

protectedLinkedListgetFomula(){

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1