版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于南京云錦的調(diào)研問卷
- 2024年鼠抗腫瘤相關(guān)抗原單克隆抗體項目立項申請報告
- 2024年智能化安裝工程服務(wù)項目申請報告范文
- 醫(yī)學(xué)教材 拔牙并發(fā)癥及拔牙創(chuàng)愈合
- 旅游課件教學(xué)課件
- 父母之愛教學(xué)課件
- 紡織行業(yè)智能制造面料研發(fā)方案
- 精準農(nóng)業(yè)種植技術(shù)集成應(yīng)用方案
- 農(nóng)業(yè)產(chǎn)業(yè)鏈優(yōu)化升級作業(yè)指導(dǎo)書
- 供應(yīng)鏈管理調(diào)整指南
- 電動門、電動執(zhí)行機構(gòu)調(diào)試工序及標準
- 生物質(zhì)能發(fā)電項目可行性分析報告
- 口腔解剖生理學(xué)習(xí)題重點試卷含答案
- 初設(shè)審查要點
- 植物遺傳轉(zhuǎn)化方法和技術(shù)(課堂PPT)
- 施工現(xiàn)場交叉施工的施工方案完整
- 大型超市各崗位職責
- 園林施工項目部環(huán)境因素識別評價表(共6頁)
- 煤礦選煤廠設(shè)備施工吊裝方案
- 申請授予學(xué)士學(xué)位審批表
- 817作業(yè)指導(dǎo)書
評論
0/150
提交評論