




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語言設(shè)計(jì)一個(gè)計(jì)算器!要稍微有點(diǎn)亮點(diǎn)的,比如輸出的字是彩色的等,還要有詳細(xì)的解說 懸賞分:0 | 解決時(shí)間:2011-1-14 08:59 | 提問者:匿名 跪求Java語言設(shè)計(jì)一個(gè)計(jì)算器!要稍微有點(diǎn)亮點(diǎn)的,比如輸出的字是彩色的或者其他什么的,還要有詳細(xì)的解說郵箱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用來標(biāo)示用戶所按下的按鈕即加減乘除/key為0標(biāo)示+,為1表示-,為2表示*,為3表示/short key=-1;/pkey的取值為-15/pkey為-1表示第一次按下=按鈕,為5說明不是第一次按下=按鈕/pkey為其他值0,1,2,3時(shí)分別代表+,-,*,/short pkey=-1;Frame frame=new Frame(Calculator);/定義標(biāo)題為Calculator的窗體TextField textfield=new TextField(30);/定義計(jì)算機(jī)/定義backspace,ce,c0按鈕Button backspace=new Button(Backspace);Button ce=new Button(CE);Button c0=new Button(C);/定義面板,其中backspace,ce,c0按鈕和計(jì)算機(jī)蘭textfeild放在面板p1中/其余按鈕放在面板p2中Panel p1=new Panel();Panel p2=new Panel();/定義界面上的按鈕數(shù)組,即除去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); / 第一頁/設(shè)置面板p1的字體和布局管理類型,將textfeild對(duì)象添加到面板中p1.setFont(fonts);p1.setLayout(new GridLayout(2,1,5,10);textfield.setFont(fonts);p1.add(textfield,null);/backspace,ce,c0按鈕注冊(cè)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);/設(shè)置面板p2的布局管理器類型為GridLayoutp2.setLayout(new GridLayout(4,5,5,5);/為按鈕組中的按鈕注冊(cè)addActionListener方法for(int i=0;inames.length;i+)bbi=new Button(namesi);p2.add(bbi);bbi.addActionListener(this);/設(shè)置面板p1和面板p2在窗體中的位置/面板p1在窗體的North方向,面板p2在窗體的South方向frame.add(p1,BorderLayout.NORTH);frame.add(p2,BorderLayout.SOUTH);frame.setVisible(true);/當(dāng)單擊關(guān)閉按鈕時(shí)退出系統(tǒng)frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent ae) String s; /通過ActionEvent類的getActionCommand()方法,得出動(dòng)作是由哪個(gè)按鈕觸發(fā)的。 /第二頁 s=ae.getActionCommand();/用戶單擊一次,計(jì)算欄里便去掉一個(gè)字符/先將計(jì)算欄里的字符清空,再添加除最好一個(gè)字符的字符串 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按鈕,計(jì)算欄清空if(s.equals(CE) textfield.setText();number=false;/用戶單擊的是C按鈕if(s.equals(C) textfield.setText();data1=data2=0.0;number=false;/用戶單擊的是sqrt按鈕,其中負(fù)數(shù)不能被開方if(s.equals(sqrt)&number) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(負(fù)數(shù)不能被開方); number=false; else textfield.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(t_content); /用戶單擊的是1/x求倒數(shù)按鈕,求倒數(shù)時(shí)分母不能為0if(s.equals(1/x) & number) t_content=textfield.getText();if(t_content.equals(0) /第三頁 textfield.setText(零不能求倒數(shù)); 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 數(shù),除100if(g=true) double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toString(dtemp); /如果是int數(shù)但能被100整除,則去掉末尾兩個(gè)0else if(Integer.parseInt(textfield.getText()%100=0) int itemp=Integer.parseInt(textfield.getText(); itemp/=100; textfield.setText(Integer.toString(itemp); /如果是int數(shù),但不能被100整除,則按Double數(shù)處理else double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toString(dtemp); /第四頁 /對(duì)正負(fù)數(shù)字的處理 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(除數(shù)不能為零); 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(除數(shù)不能為零); 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(除數(shù)不能為零); 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(除數(shù)不能為零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=3; textfield.setText(); /第七頁 /所按下的按鈕為=,求結(jié)果 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(除數(shù)不能為零); 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(除數(shù)不能為零); number=false; else key=-1; data2/=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; pkey=5; /按下的按鈕時(shí)數(shù)字按鈕 else switch(s.charAt(0) case0: case1: case2: case3: case4: case5: case6: case7: case8: case9: number=true; textfield.setText(textfield.getText()+s); break; /對(duì).的處理 case.: t_content=textfield.getText(); boolean g=false; /第九頁 /對(duì)計(jì)算機(jī)欄中的數(shù)據(jù)進(jìn)行檢驗(yàn) /如果其中有小數(shù)點(diǎn),則用戶單擊該按鈕時(shí)不在添加小數(shù)點(diǎn) for(int i=0;it_content.length();i+) if(t_content.charAt(i)=.) g=true; break; /數(shù)據(jù)中已經(jīng)有小數(shù)點(diǎn) if(g=true) break; / 數(shù)據(jù)中沒有小數(shù)點(diǎn),當(dāng)用戶單擊小數(shù)點(diǎn)時(shí)添加小數(shù)點(diǎn) if(g=false) textfield.setText(t_content+.); private String Integer(String string) / TODO Auto-generated method stub return null; 懸賞分:20 | 解決時(shí)間:2010-4-28 11:2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)合同范本1995
- 辦公家具訂購合同范本
- pc構(gòu)件模具合同范本
- 中學(xué)軍訓(xùn)合同范本
- 共同抵押合同范本
- 中介和工廠合同范本
- 華泰期貨合同范本
- 公司簽訂賠償合同范例
- 修假山承攬合同范本
- 中國石化合同范本
- 北師大版語文選修《蕭蕭》ppt課件1
- 大學(xué)生職業(yè)素養(yǎng)課件-5第五單元學(xué)會(huì)有效溝通-PPT課件
- 《談骨氣》課文閱讀(共2頁)
- 病原生物與免疫學(xué)(中職)緒論P(yáng)PT課件
- 高考成績證明模板
- 新起點(diǎn)小學(xué)英語一年級(jí)上冊(cè)單詞卡片(共23頁)
- 蝴蝶蘭PPT課件
- 譯林版五下英語1-3單元電子稿
- 賓館做房記錄表
- 工業(yè)管道檢查報(bào)告
- 節(jié)后復(fù)工安全溫馨提示
評(píng)論
0/150
提交評(píng)論