JAVA课程模拟计算器源代码.docx
- 文档编号:9789457
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:18
- 大小:18.04KB
JAVA课程模拟计算器源代码.docx
《JAVA课程模拟计算器源代码.docx》由会员分享,可在线阅读,更多相关《JAVA课程模拟计算器源代码.docx(18页珍藏版)》请在冰豆网上搜索。
JAVA课程模拟计算器源代码
packagecalc;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.lang.Math;
publicclassCalcextendsJFrameimplementsActionListener{
privateJMenuBarmb=newJMenuBar();
privateJMenuhelp=newJMenu("帮助(H)");
privateJMenuauthor=newJMenu("查看(S)");
privateJMenuItemsech=newJMenuItem("查看帮助");
privateJMenuItemabout=newJMenuItem("关于计算器");
privateJMenuItemauth=newJMenuItem("关于作者");
privateImageimg;
privatedoubled0=0.0,d1=0.0,d2=0.0;
privateStringtcnt;//用来存储计算栏中的内容
booleannumber=false;//用来标记用户是否是数字
shortk1=-1;//k1用来标示用户所按下的计算按钮即加减乘除,k1为0表示+,k1为1表示-,k1为2表示*,k1为3表示/
//k2取值-1~5,k2为-1,表示第一次按下=按钮,为5说明不是第一次按下=按钮
//k2为0,1,2,3分别代表+,-,*,/
shortk2=-1;
JTextFieldtfNumber=newJTextField(15);
//文本输入框
publicJPanelcreatePN(){
JPanelpn=newJPanel();
pn.setLayout(newBorderLayout(5,5));
pn.add(tfNumber,BorderLayout.CENTER);
returnpn;
}
//最左边的一栏
publicJPanelcreatePW(){
JPanelpw=newJPanel();
pw.setLayout(newGridLayout(5,1,5,5));
JButton[]jbts=newJButton[5];
String[]labels=newString[]{"MC","MR","MS","M+","M-"};
for(inti=0;i JButtonjbt=newJButton(labels[i]); jbt.setForeground(Color.red); pw.add(jbt); jbt.addActionListener(this); } returnpw; } publicJPanelcreatePC(){ JPanelpc=newJPanel(); pc.setLayout(newBorderLayout(5,5)); pc.add(createPCN(),BorderLayout.NORTH); pc.add(createPCC(),BorderLayout.SOUTH); returnpc; } publicJPanelcreatePCN(){ JPanelpcn=newJPanel(); pcn.setLayout(newGridLayout(1,3,5,5)); JButton[]jbts=newJButton[3]; String[]labels=newString[]{"Backspace","CE","C"}; for(inti=0;i JButtonjbt=newJButton(labels[i]); jbt.setForeground(Color.red); pcn.add(jbt); jbt.addActionListener(this); } returnpcn; } publicJPanelcreatePCC(){ JPanelpcc=newJPanel(); pcc.setLayout(newGridLayout(4,5,5,5)); JButton[]jbts=newJButton[20]; String[]labels=newString[]{"7","8","9","/","sqrt","4","5", "6","*","%","1","2","3","-","1/x","0","+/-",".","+", "="}; for(inti=0;i JButtonjbt=newJButton(labels[i]); if(labels[i].endsWith("+")||labels[i].endsWith("-") ||labels[i].endsWith("*")||labels[i].endsWith("/")){ jbt.setForeground(Color.red); }else{ jbt.setForeground(Color.BLUE); } pcc.add(jbt); jbt.addActionListener(this); } returnpcc; } publicvoidactionPerformed(ActionEventae){ Strings; s=ae.getActionCommand(); /*MS表示存储显示栏中的数字到d1 *MR表示在显示栏中显示存储的数字 *MC表示清除存储的数字 *M+表示将显示栏中的数字加到存储的数字上 *M-表示存储的数字减去显示栏中的数字 */ if(s.equals("MC")&&number){ d0=0.0;} if(s.equals("MS")&&number){ d0=Double.parseDouble(tfNumber.getText());} if(s.equals("MR")&&number){ tfNumber.setText(Double.toString(d0));} if(s.equals("M+")&&number){ tfNumber.setText(Double.toString(d0+Double.parseDouble(tfNumber.getText())));} if(s.equals("M-")&&number){ tfNumber.setText(Double.toString(d0-Double.parseDouble(tfNumber.getText())));} if(s.equals("Backspace")&&number){ tcnt=tfNumber.getText(); tfNumber.setText(""); //先将计算栏里的字符清空,再添加出最后一个字符的字符串 for(inti=0;i charc=tcnt.charAt(i); tfNumber.setText(tfNumber.getText()+c); } } //清空计算栏 if(s.equals("CE")){ tfNumber.setText(""); number=false; } if(s.equals("C")){ tfNumber.setText(""); d2=0.0; d1=0.0; number=false; } if(s.equals("sqrt")&&number){ tcnt=tfNumber.getText(); if(tcnt.charAt(0)=='-'){ tfNumber.setText("负数不能被开放"); number=false; }else{ tfNumber.setText(Double.toString(Math.sqrt(Double .parseDouble(tcnt)))); } } //点击1/x求倒数按钮&&求倒数分母不能为0 if(s.equals("1/x")&&number){ tcnt=tfNumber.getText(); if(tcnt.equals("0")){ tfNumber.setText("求倒数分母不能为零"); number=false; }else{ tfNumber.setText(Double.toString(1/Double.parseDouble(tcnt))); } } //取余数运算 if(s.equals("%")&&number){ if(d2==0){ tcnt=tfNumber.getText(); tfNumber.setText(tcnt); }else{ booleang=false; for(inti=0;i if(tfNumber.getText().charAt(i)=='.'){ g=true; break; } //double直接除100 if(g==true){ doubledtemp=Double.parseDouble(tfNumber.getText()); dtemp=dtemp/100.0; tfNumber.setText(Double.toString(dtemp)); }else{ if(Integer.parseInt(tfNumber.getText())%100==0){ intitemp=Integer.parseInt(tfNumber.getText()); itemp/=100; tfNumber.setText(Integer.toString(itemp)); }else{ doubledtemp=Double.parseDouble(tfNumber .getText()); dtemp=dtemp/100.0; tfNumber.setText(Double.toString(dtemp)); } } } }} //对正负数的处理 if(s.equals("+/-")){ tcnt=tfNumber.getText(); if(tcnt.charAt(0)=='-'){ tfNumber.setText(""); for(inti=1;i tfNumber.setText(tfNumber.getText()+tcnt.charAt(i)); } }else{ tfNumber.setText("-"+tcnt); } } //按下+号 if(s.equals("+")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k2=k1=0; tfNumber.setText(""); } //按下减号 if(s.equals("-")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k2=k1=1; tfNumber.setText(""); } //按下*号 if(s.equals("*")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k1=k2=2; tfNumber.setText(""); } //按下除号 if(s.equals("/")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k1=k2=3; tfNumber.setText(""); } //按下=号 if(s.equals("=")&&number){ //如果不是第一次按下= if(k2==5){ switch(k1){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2-=Double.parseDouble(tfNumber.getText()); break; case2: d2*=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k1=k2=0; tfNumber.setText(""); }else{ d1=Double.parseDouble(tfNumber.getText()); switch(k1){ case0: k1=-1; d2+=Double.parseDouble(tfNumber.getText()); tfNumber.setText(Double.toString(d2)); break; case1: k1=-1; d2-=Double.parseDouble(tfNumber.getText()); tfNumber.setText(Double.toString(d2)); break; case2: k1=-1; d2*=Double.parseDouble(tfNumber.getText()); tfNumber.setText(Double.toString(d2)); break; case3: k1=-1; if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=Double.parseDouble(tfNumber.getText()); tfNumber.setText(Double.toString(d2)); break; } } } k2=5; } else{ switch(s.charAt(0)){ case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': number=true; tfNumber.setText(tfNumber.getText()+s); break; //小数点 case'.': tcnt=tfNumber.getText(); booleang=false; //对计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程 模拟 计算器 源代码