JAVA模擬科學(xué)計算器_第1頁
JAVA模擬科學(xué)計算器_第2頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

16/16JAVA模擬科學(xué)計算器importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassCaextendsJFrameimplementsActionListener

{

//***********************************************************************//標準型計算器控件鍵鈕

staticJFramef1=newJFrame("計算器");

privateStringKEYS[]={"7","8","9","/","sqrt","4","5","6","*","%",

"1","2","3","-","1/x","0","+/-",".","+","="};

privateStringM[]={"","MC","MR","MS","M+"};

privateStringCOM[]={"Backspace","CE","C"};

privateJButtonkeys[]=newJButton[KEYS.length];

privateJButtoncom[]=newJButton[COM.length];

privateJButtonm[]=newJButton[M.length];

privateJTextFieldresult,hh,jj;

MenuBarmenubar1=newMenuBar();

Menuedit=newMenu("編輯(E)"),

view=newMenu("查看(V)"),

help=newMenu("幫助(H)");

MenuItemcopy=newMenuItem("復(fù)制(C)"),

paste=newMenuItem("粘貼(P)"),

standar=newMenuItem("標準型(T)"),

science=newMenuItem("科學(xué)型(S)"),

numgroup=newMenuItem("數(shù)字分組(I)"),

helpt=newMenuItem("幫助主題(H)"),

about=newMenuItem("關(guān)于計算器(A)");

privatebooleanfirstDigit=true;//判斷第一個輸入的字符是否是數(shù)字

privatedoubleresultNum=0.0,resultNum2=0.0;//中間結(jié)果

privateStringoperator="=",co,str,operator2="=";

privatebooleanoperateValidFlag=true;

//***********************************************************************//科學(xué)性計算器控件及按鈕

staticJFramef2=newJFrame("科學(xué)計算器");

privateJTextFieldresult2;

privateString[]KON={"sta","F-E","(",")","MC","Ave","dms","Exp",

"In","MR","Sum","sin","x^y","log","MS","s","cos","x^3","n!",

"M+","Dat","tan","x^2","1/x","pi"};

privateString[]KO={"7","8","9","/","Mod","And",

"4","5","6","*","Or","Xor",

"1","2","3","-","Lsh","Not",

"0","+/-",".","+","=","Int",

"A","B","C","D","E","F"};

privateStringITM[]={"標準型","科學(xué)型","十六進制數(shù)(H)F5","十進制(D)F6",

"八進制(O)F7","二進制(B)F8","四字(Q)F12","DWORD值(R)F2","單字(W)F3","字節(jié)(Y)F4"

,"數(shù)字分組(I)"};

privatefinalString[]COMM={"Backspace","CE","C"};

privateJButtoncomm[]=newJButton[COMM.length];

privateJButtonkon[]=newJButton[KON.length];

privateJButtonko[]=newJButton[KO.length];

privateMenuItemitm[]=newMenuItem[ITM.length];

privateJPanelpanel0,panel1,panel2,panel3,panel4,panel5,panel6;

Checkboxcheckbox1,checkbox2,checkbox3,checkbox4;

MenuBarmenubar2=newMenuBar();//添加菜單條

Menuedit2=newMenu("編輯(E)"),

view2=newMenu("查看(V)"),

help2=newMenu("幫助(H)");

MenuItemcopy2=newMenuItem("復(fù)制(C)Ctrl+C"),

past2=newMenuItem("粘貼(P)Ctrl+V"),

standar2=newMenuItem("標準型(T)"),

science2=newMenuItem("科學(xué)型(S)"),

numgroup2=newMenuItem("數(shù)字分組(I)"),

menuitem1=newMenuItem("十六進制數(shù)(H)F5"),

menuitem2=newMenuItem("十進制(D)F6"),

menuitem3=newMenuItem("八進制(O)F7"),

menuitem4=newMenuItem("二進制(B)F8"),

menuitem5=newMenuItem("四字(Q)F12"),

menuitem6=newMenuItem("DWORD值(R)F2"),

menuitem7=newMenuItem("單字(W)F3"),

menuitem8=newMenuItem("字節(jié)(Y)F4"),

helpt2=newMenuItem("幫助主題(H)"),

about2=newMenuItem("關(guān)于計算器(A)");

//***********************************************************************//構(gòu)造函數(shù)

publicCa()

{

//標準型開始初始化********************

result=newJTextField("0.");

result.setHorizontalAlignment(JTextField.RIGHT);//文字右對齊

result.setEditable(false);//設(shè)置為不可編輯

result.setBackground(Color.WHITE);//設(shè)置顏色為白色

JPanelk0=newJPanel();

k0.setLayout(newGridLayout(4,5,5,5));

for(inti=0;i=0)//按數(shù)字鍵或者小數(shù)點handleNB(label);

else//按運算符

handleOR(label);

}

privatevoidhandleBS()//處理Backspace

{

Stringtext=newString(result.getText());

intj=text.length();

if(j>0)

{

text=text.substring(0,j-1);

if(text.length()==0)

{

result.setText("0");

firstDigit=true;

operator="=";

}

else

{

result.setText(text);

}

}

}

privatevoidhandleNB(Stringkey)//處理數(shù)字鍵

{

if(firstDigit)

{

result.setText(key);

}

elseif((key.equals("."))

}

elseif(!key.equals("."))

{

result.setText(result.getText()+key);

}

firstDigit=false;

}

privatevoidhandleC()//處理C

{

result.setText("0");

firstDigit=true;

operator="=";

}

privatevoidhandleOR(Stringkey)//處理運算符

{

if(operator.equals("/"))

{

if(getNumberFromText()==0.0)

{

operateValidFlag=false;

result.setText("除數(shù)不能是零");

}

else

resultNum/=getNumberFromText();

}

elseif(operator.equals("1/x"))

{

if(resultNum==0.0)

{

operateValidFlag=false;

result.setText("零沒有倒數(shù)");

}

else

resultNum=1/resultNum;

}

elseif(operator.equals("+"))

resultNum+=getNumberFromText();

elseif(operator.equals("-"))

resultNum-=getNumberFromText();

elseif(operator.equals("*"))

resultNum*=getNumberFromText();

elseif(operator.equals("sqrt"))

resultNum=Math.sqrt(resultNum);/////////elseif(operator.equals("%"))

resultNum=resultNum/100;

elseif(operator.equals("+/-"))

resultNum=resultNum*(-1);

elseif(operator.equals("="))

{resultNum=getNumberFromText();}

if(operateValidFlag)//雙精度浮點數(shù)的運算

{

longt1;

doublet2;

t1=(long)resultNum;

t2=resultNum-t1;

if(t2==0)

{

result.setText(String.valueOf(t1));

}

else

{

result.setText(String.valueOf(resultNum));

}

}

//運算符等于用戶按的按鈕

operator=key;

firstDigit=true;

operateValidFlag=true;

}

publicvoidhandleMC()//處理MC,清除內(nèi)存

{

resultNum=0.0;

result.setText("0");

m[0].setText("");

firstDigit=true;

operator="=";

}

publicvoidhandleMR()//處理MR,重新調(diào)用存儲的數(shù)據(jù)

{

if(result.getText()!="")//有記憶數(shù)字

{

result.setText(""+resultNum);

}

}

publicvoidhandleMS()//處理MS,存儲顯示的數(shù)據(jù)

{

resultNum=Double.valueOf(result.getText()).doubleValue();

m[0].setText("M");

result.setText("0");

firstDigit=true;

operator="=";

}

publicvoidhandleM()//處理M+,將顯示的數(shù)字與已經(jīng)存儲的數(shù)據(jù)相加要查看新的數(shù)字單擊MR

{

resultNum=resultNum+Double.valueOf(result.getText()).doubleValue();

}

//標準型監(jiān)聽器定義部分結(jié)束

//****************************************************

//科學(xué)性監(jiān)聽器定義

classitemListenerimplementsItemListener

{

publicvoiditemStateChanged(ItemEvente)

{

Checkboxcb=(Checkbox)e.getItemSelectable();//獲取事件源的

resetable();//使按鈕重新可用

if(cb.getLabel().equals("十六進制"))

{

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[21].setForeground(Color.gray);

ko[1].setForeground(Color.blue);

ko[2].setForeground(Color.blue);

ko[24].setForeground(Color.blue);

ko[25].setForeground(Color.blue);

ko[26].setForeground(Color.blue);

ko[27].setForeground(Color.blue);

ko[28].setForeground(Color.blue);

ko[29].setForeground(Color.blue);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue);}

elseif(cb.getLabel().equals("十進制")){

kon[5].setEnabled(false);

kon[10].setEnabled(false);

kon[15].setEnabled(false);

kon[20].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

kon[5].setForeground(Color.gray);kon[10].setForeground(Color.gray);kon[15].setForeground(Color.gray);kon[20].setForeground(Color.gray);ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[1].setForeground(Color.blue);

ko[2].setForeground(Color.blue);

kon[1].setForeground(Color.magenta);

kon[7].setForeground(Color.magenta);kon[11].setForeground(Color.magenta);kon[16].setForeground(Color.magenta);kon[21].setForeground(Color.magenta);kon[24].setForeground(Color.blue);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue);

}

elseif(cb.getLabel().equals("八進制")){

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

ko[1].setEnabled(false);

ko[2].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[24].setForeground(Color.gray);

ko[1].setForeground(Color.gray);

ko[2].setForeground(Color.gray);

ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue);}

elseif(cb.getLabel().equals("二進制")){

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

ko[1].setEnabled(false);

ko[2].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

ko[0].setEnabled(false);

ko[6].setEnabled(false);

ko[7].setEnabled(false);

ko[8].setEnabled(false);

ko[13].setEnabled(false);

ko[14].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[21].setForeground(Color.gray);

kon[24].setForeground(Color.gray);

ko[1].setForeground(Color.gray);

ko[2].setForeground(Color.gray);

ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[0].setForeground(Color.gray);

ko[6].setForeground(Color.gray);

ko[7].setForeground(Color.gray);

ko[8].setForeground(Color.gray);

ko[13].setForeground(Color.gray);

ko[14].setForeground(Color.gray);

}

}

}

classca2ActionlistenerimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

Stringlabel2=e.getActionCommand();//獲取事件源的標簽

if(label2.equals(COMM[0]))//按Backspace

handleBS2();

elseif(label2.equals(COMM[1]))//按CE

result2.setText("0");

elseif(label2.equals(COMM[2]))//按C

handleC2();

elseif(label2.equals(KON[4]))//按MC

handleMC2();

elseif(label2.equals(KON[9]))//按MR

handleMR2();

elseif(label2.equals(KON[14]))//按MS

handleMS2();

elseif(label2.equals(KON[19]))//按M+

handleM2();

elseif(label2.equals(KON[11]))//按sin

handleSI();

elseif(label2.equals(KON[12]))//按x^y

handleYT();

elseif(label2.equals(KON[13]))//按log

handleLO();

elseif(label2.equals(KON[16]))//按cos

handleCO();

elseif(label2.equals(KON[17]))//按x^3

handleTT();

elseif(label2.equals(KON[22]))//按x^2

handlePF();

elseif(label2.equals(KON[18]))//按n!

handleJC();

elseif(label2.equals(KON[21]))//按tan

handleTA();

elseif(label2.equals(KON[24]))//按pi

result2.setText(""+3.141592653);

elseif("0123456789.".indexOf(label2)>=0)//按數(shù)字鍵或者小數(shù)點handleNB2(label2);

else//按運算符

handleOR2(label2);

}

}

//科學(xué)性監(jiān)聽器定義結(jié)束

//****************************************************

//科學(xué)性計算器用到的函數(shù)

voidresetable()//使按鈕重新可用

{

for(inti=0;i0)

{

text2=text2.substring(0,j2-1);

if(text2.length()==0)

{

result2.setText("0");

firstDigit=true;

operator2="=";

}

else

{

result2.setText(text2);

}

}

}

publicvoidhandleMC2()//處理MC,清除內(nèi)存

{

resultNum2=0.0;

result2.setText("0");

jj.setText("");

firstDigit=true;

operator2="=";

}

privatevoidhandleNB2(Stringkey)//處理數(shù)字鍵

{

if(firstDigit)

{

result2.setText(key);

}

elseif((key.equals("."))

}

elseif(!key.equals("."))

{

result2.setText(result2.getText()+key);

}

firstDigit=false;

}

publicvoidhandleMR2()//處理MR,重新調(diào)用存儲的數(shù)據(jù)

{

if(result2.getText()!="")//有記憶數(shù)字

result2.setText(""+resultNum2);

}

publicvoidhandleMS2()//處理MS,存儲顯示的數(shù)據(jù)

{

resultNum2=Double.valueOf(result2.getText()).doubleValue();

result2.setText("0");

jj.setText("M");

firstDigit=true;

operator2="=";

}

publicvoidhandleM2()//處理M+,將顯示的數(shù)字與已經(jīng)存儲的數(shù)據(jù)相加要查看新的數(shù)字單擊MR

{

resultNum2=resultNum2+Double.valueOf(result2.getText()).doubleValue();

}

publicvoidhandleSI()//sin

{

doublei=getNumberFromText2();

result2.setText(String.valueOf(Math.sin(i)));

}

publicvoidhandleYT()//Y次方

{

if(getNumberFromText2()==0.0||getNumberFromText2()==1)

{

resultNum2=getNumberFromText2();

}

else

{

for(inti=1;i<=getNumberFromText2();i++)

{

resultNum2*=resultNum2;

}

}

result2.setText(String.valueOf(resultNum2));

}

publicvoidhandleLO()//對數(shù)

{

doublei=getNumberFromText2();

resultNum2=Math.log(i);

result2.setText(String.valueOf(resultNum2));

}

publicvoidhandleCO()//cos

{

doublei=getNumberFromText2();

resultNum2=Math.cos(i);

result2.setText(String.valueOf(resultNum2));

}

publicvoidhandleTT()//三次方

{

if(getNumberFromText2()==0.0||getNumberFromText2()==1)

{

resultNum2=getNumberFromText2();

}

else

{

resultNum2=getNumberFromText2()*getNumberFromText2()*getNumberFromText2();

}

result2.setText(String.valueOf(resultNum2));

}

publicvoidhandlePF()//平方

{

if(getNumberFromText2()==0.0||getNumberFromText2()==1)

{

resultNum2=getNumberFromText2();

}

else

{

resultNum2=getNumberFromText2()*getNumberFromText2();

}

result2.setText(String.valueOf(resultNum2));

}

publicvoidhandleJC()//階乘

{

doublei=getNumberFromText2();

if((i%2==0)||(i%2==1))//判斷為整數(shù)放進行階乘操作

{

intj=(int)i;//強制類型轉(zhuǎn)換

intresultNum2=1;

for(intk=1;k<=j;k++)

resultNum2*=k;

result2.setText(String.valueOf(resultNum2));

}

else

{

result2.setText("無法求階乘");

}

}

publicvoidhandleTA()//tan

{

doublei=getNumberFromText2();

resultNum2=Math.tan(i);

result2.setText(String.valueOf(resultNum2));

}

privatevoidhandleOR2(Stringkey)//處理運算符

{

if(operator2.equals("/"))

{

if(getNumberFromText2()==0.0)

{

operateValidFlag=false;

result2.setText("除數(shù)不能是零");

}

else

resultNum2/=getNumberFromText2();

}

elseif(operator2.equals("1/x"))

{

if(resultNum2==0.0)

{

operateValidFlag=false;

result2.setText("零沒有倒數(shù)");

}

else

resultNum2=1/resultNum2;

}

elseif(operator2.equals("+"))

resultNum2+=getNumberFromText2();

elseif(operator2.equals("-"))

resultNum2-=getNumberFromText2();

elseif(operator2.equals("*"))

resultNum2*=getNumberFromText2();

elseif(operator2.equals("sqrt"))

resultNum2=Math.sqrt(resultNum2);/////////

elseif(operator2.equals("%"))

resultNum2=resultNum2/100;

elseif(operator2.equals("+/-"))

resul

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論