用java用语言设计算器.doc_第1页
用java用语言设计算器.doc_第2页
用java用语言设计算器.doc_第3页
用java用语言设计算器.doc_第4页
用java用语言设计算器.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言设计一个计算器!要稍微有点亮点的,比如输出的字是彩色的等,还要有详细的解说 悬赏分:0 | 解决时间:2011-1-14 08:59 | 提问者:匿名 跪求Java语言设计一个计算器!要稍微有点亮点的,比如输出的字是彩色的或者其他什么的,还要有详细的解说邮箱664744815最佳答案 import java.awt.Color;import java.awt.Font;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.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.WindowConstants;import javax.swing.border.LineBorder;class Normal double i,j; public Normal(double num1,double num2) i=num1; j=num2; public double puls() return i+j; public double subtract() return i-j; public double multiply() return i*j; public double divide() return i/j; public double surpuls() return i%j; class scientific extends Normal public scientific(int num1, int num2) super(num1, num2); public class calc extends JFrame public static void main(String args) viewNormal VN= new viewNormal(normal); class viewNormal extends JFrame implements ActionListener JPanel jp1 = new JPanel(new GridLayout(4,3,5,5); JPanel jp2 = new JPanel(new GridLayout(5,1,5,5); JLabel jl; JButton jb; JButton jbs,jbo,jba,jbb,jbc,jby; StringBuffer sb = new StringBuffer(); Normal normal; int dot=0; double fnum=0; double lnum=0; double result; String sign=null; public viewNormal(String title) setTitle(title); setLayout(null); setVisible(true); setBounds(200,200,305,350); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); jb= new JButton12; for(int i=0;i9;i+) jbi=new JButton(+(i+1); jp1.add(jbi); jbi.addActionListener(this); jb9=new JButton(.); jb10=new JButton(0); jb11=new JButton(=); jb9.addActionListener(this); jb10.addActionListener(this); jb11.addActionListener(this); jp1.add(jb9); jp1.add(jb10); jp1.add(jb11); jp1.setBounds(10, 100, 200, 200); jbs= new JButton(+);jbo= new JButton(-);jba= new JButton(*); jbb= new JButton(/);jby= new JButton(%);jbc= new JButton(C); jbs.addActionListener(this);jbo.addActionListener(this);jba.addActionListener(this); jbb.addActionListener(this);jby.addActionListener(this);jbc.addActionListener(this); /jp2.add(jby); jp2.add(jbs);jp2.add(jbo);jp2.add(jba);jp2.add(jbb);jp2.add(jbc); jp2.setBounds(215, 100, 70, 200); jl= new JLabel(0,JLabel.RIGHT); jl.setFont(new Font(Batang,Font.BOLD, 20); jl.setBorder(new LineBorder(Color.black,2); jl.setBackground(Color.white); jl.setBounds(10, 40, 275, 50); jl.setOpaque(true); add(jl); add(jp1); add(jp2); /+ public void sum() lnum=Double.parseDouble(sb.toString(); normal=new Normal(fnum,lnum); fnum=normal.puls(); result=fnum; /- private void sub() System.out.println(sb.toString(); lnum=Double.parseDouble(sb.toString(); normal=new Normal(fnum,lnum); fnum=normal.subtract(); result=fnum; /* private void mul() lnum=Double.parseDouble(sb.toString(); normal=new Normal(fnum,lnum); fnum=normal.multiply(); result=fnum; / / private void div() lnum=Double.parseDouble(sb.toString(); normal=new Normal(fnum,lnum); fnum=normal.divide(); result=fnum; /% private void sur() lnum=Double.parseDouble(sb.toString(); normal=new Normal(fnum,lnum); fnum=normal.surpuls(); result=fnum; / = private void same() if(sign.equals(+) sum(); if(sign.equals(-) sub(); if(sign.equals(*) mul(); if(sign.equals(/) div(); if(sign.equals(%) sur(); /result public void Result() if(result%1!=0) jl.setText(+result); else int i=(int)result; jl.setText(+i); Override public void actionPerformed(ActionEvent e) /System.out.println(sb.toString(); / 19 for(int i=0;i9;i+) if(e.getSource()=jbi&!sb.toString().equals(0) sb.append(jbi.getText(); jl.setText(sb.toString(); else if(e.getSource()=jbi&sb.toString().equals(0) int d=sb.length(); sb.delete(0, d); sb.append(jbi.getText(); jl.setText(sb.toString(); / 0 if(e.getSource()=jb10&!sb.toString().equals(0) sb.append(jb10.getText(); jl.setText(sb.toString(); / . if(e.getSource()=jb9&dot=0&!sb.toString().equals() dot+; sb.append(jb9.getText(); jl.setText(sb.toString(); / = if(e.getSource()=jb11&!sb.toString().equals() same(); Result(); int d=sb.length(); sb.delete(0, d); dot=0; / + if(e.getSource()=jbs&!sb.toString().equals() if(sign!=+&sign!=null) same(); else sum(); sign =+; Result(); int d=sb.length(); sb.delete(0, d); dot=0; /- if(e.getSource()=jbo&!sb.toString().equals() if(fnum=0) fnum=2*Double.parseDouble(sb.toString(); if(sign!=-&sign!=null) same(); else sub(); sign =-; Result(); int d=sb.length(); sb.delete(0, d); dot=0; /* if(e.getSource()=jba&!sb.toString().equals() if(fnum=0) fnum=1; if(sign!=*&sign!=null) same(); else mul(); sign =*; Result(); int d=sb.length(); sb.delete(0, d); dot=0; / / if(e.getSource()=jbb&!sb.toString().equals() if(fnum=0) fnum=Math.pow(Double.parseDouble(sb.toString(),2); if(sign!=/&sign!=null) same(); else div(); sign =/; Result(); int d=sb.length(); sb.delete(0, d); dot=0; /%/ if(e.getSource()=jby&!sb.toString().equals()/ if(fnum=0)/ fnum=Double.parseDouble(sb.toString();/ result=fnum;/ / else / if(sign!=%&sign!=null)/ same();/ else/ lnum=Double.parseDouble(sb.toString();/ normal=new Normal(fnum,lnum);/ fnum=normal.surpuls();/ result=fnum;/ / / sign =%;/ Result();/ int d=sb.length();/ sb.delete(0, d);/ dot=0;/ /clear if(e.getSource()=jbc) int d=sb.length(); sb.delete(0, d); jl.setText(0); dot=0; fnum=0; lnum=0; sign=null; class viewScientific extends viewNormal public viewScientific(String title) super(title); setBounds(200,200,800,500); public class Baidu public static void main(String args) throws Exception Runtime.getRuntime().exec(calc.exe); import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator implements ActionListenerprivate double data1=0.0,data2=0.0;private String t_content;boolean number=false;/key用来标示用户所按下的按钮即加减乘除/key为0标示+,为1表示-,为2表示*,为3表示/short key=-1;/pkey的取值为-15/pkey为-1表示第一次按下=按钮,为5说明不是第一次按下=按钮/pkey为其他值0,1,2,3时分别代表+,-,*,/short pkey=-1;Frame frame=new Frame(Calculator);/定义标题为Calculator的窗体TextField textfield=new TextField(30);/定义计算机/定义backspace,ce,c0按钮Button backspace=new Button(Backspace);Button ce=new Button(CE);Button c0=new Button(C);/定义面板,其中backspace,ce,c0按钮和计算机兰textfeild放在面板p1中/其余按钮放在面板p2中Panel p1=new Panel();Panel p2=new Panel();/定义界面上的按钮数组,即除去backspace,ce,c0按钮的所有按钮String names=7,8,9,/,sqrt,4,5,6,*,%,1,2,3,-,1/x,0,+/-,.,+,=;Button bb=new Buttonnames.length;public static void main(String args) Calculator cal=new Calculator(); cal.go();public void go()frame.setSize(300,200);frame.setLayout(new BorderLayout();Font fonts=new Font(楷体_GB2312,Font.PLAIN,12); / 第一页/设置面板p1的字体和布局管理类型,将textfeild对象添加到面板中p1.setFont(fonts);p1.setLayout(new GridLayout(2,1,5,10);textfield.setFont(fonts);p1.add(textfield,null);/backspace,ce,c0按钮注册addActionListener方法backspace.addActionListener(this);ce.addActionListener(this);c0.addActionListener(this);/将backspace,ce,c0按钮添加到p1面板中p1.add(backspace,null);p1.add(ce,null);p1.add(c0,null);/设置面板p2的布局管理器类型为GridLayoutp2.setLayout(new GridLayout(4,5,5,5);/为按钮组中的按钮注册addActionListener方法for(int i=0;inames.length;i+)bbi=new Button(namesi);p2.add(bbi);bbi.addActionListener(this);/设置面板p1和面板p2在窗体中的位置/面板p1在窗体的North方向,面板p2在窗体的South方向frame.add(p1,BorderLayout.NORTH);frame.add(p2,BorderLayout.SOUTH);frame.setVisible(true);/当单击关闭按钮时退出系统frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent ae) String s; /通过ActionEvent类的getActionCommand()方法,得出动作是由哪个按钮触发的。 /第二页 s=ae.getActionCommand();/用户单击一次,计算栏里便去掉一个字符/先将计算栏里的字符清空,再添加除最好一个字符的字符串 if(s.equals(Backspace)&number) t_content=textfield.getText(); textfield.setText(); for(int i=0;it_content.length()-1;i+) char c=t_content.charAt(i); textfield.setText(textfield.getText()+c); /用户单击的是CE按钮,计算栏清空if(s.equals(CE) textfield.setText();number=false;/用户单击的是C按钮if(s.equals(C) textfield.setText();data1=data2=0.0;number=false;/用户单击的是sqrt按钮,其中负数不能被开方if(s.equals(sqrt)&number) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(负数不能被开方); number=false; else textfield.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(t_content); /用户单击的是1/x求倒数按钮,求倒数时分母不能为0if(s.equals(1/x) & number) t_content=textfield.getText();if(t_content.equals(0) /第三页 textfield.setText(零不能求倒数); number=false;else textfield.setText(Double.toString(1/Double.parseDouble(t_content); /用户单击的是%按钮if(s.equals(%)&number) if(data2=0) t_content=textfield.getText(); textfield.setText(t_content);else boolean g=false; for(int i=0;itextfield.getText().length();i+) if(.=textfield.getText().charAt(i) g=true; break;/如果是Double 数,除100if(g=true) double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toString(dtemp); /如果是int数但能被100整除,则去掉末尾两个0else if(Integer.parseInt(textfield.getText()%100=0) int itemp=Integer.parseInt(textfield.getText(); itemp/=100; textfield.setText(Integer.toString(itemp); /如果是int数,但不能被100整除,则按Double数处理else double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toString(dtemp); /第四页 /对正负数字的处理 if(s.equals(+/-) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(); String content; for(int i=1;it_content.length();i+) textfield.setText(textfield.getText()+t_content.charAt(i); else textfield.setText(-+t_content); /所按下的按钮为+按钮if(s.equals(+) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数不能为零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=0; textfield.setText(); /第五页 /所按下的按钮为-按钮if(s.equals(-) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数不能为零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=1; textfield.setText(); /所按下的按钮为*按钮 if(s.equals(*) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) / 第六页 textfield.setText(除数不能为零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=2; textfield.setText(); /所按下的按钮为/按钮 if(s.equals(/) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数不能为零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=3; textfield.setText(); /第七页 /所按下的按钮为=,求结果 if(s.equals(=)&number) /如果不是第一次按下=按钮 if(pkey=5) switch(pkey) case 0: data2+=data1; textfield.setText(Double.toString(data2); break; case 1: data2-=data1; textfield.setText(Double.toString(data2); break; case 2: data2*=data1; textfield.setText(Double.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数不能为零); number=false; else data2/=data1; textfield.setText(Double.toString(data2); break; /如果是第一次按下=按钮 else data1=Double.parseDouble(textfield.getText(); switch(key) case 0: key=-1; data2+=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 1: key=-1; data2-=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); /第八页 break; case 2: key=-1; data2*=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数不能为零); number=false; else key=-1; data2/=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; pkey=5; /按下的按钮时数字按钮 else switch(s.charAt(0) case0: case1: case2: case3: case4: case5: case6: case7: case8: case9: number=true; textfield.setText(textfield.getText()+s); break; /对.的处理 case.: t_content=textfield.getText(); boolean g=false; /第九页 /对计算机栏中的数据进行检验 /如果其中有小数点,则用户单击该按钮时不在添加小数点 for(int i=0;it_content.length();i+) if(t_content.charAt(i)=.) g=true; break; /数据中已经有小数点 if(g=true) break; / 数据中没有小数点,当用户单击小数点时添加小数点 if(g=false) textfield.setText(t_content+.); private String Integer(String string) / TODO Auto-generated method stub return null; 悬赏分:20 | 解决时间:2010-4-28 11:2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论