當前位置:吉日网官网 - 紀念幣收藏 - java加減乘除計算器的界面編程?

java加減乘除計算器的界面編程?

之前讀書的時候寫的。在工作中聽人說JFrame框架在企業中基本不用,所以沒有深入研究過。如果妳想要,我可以給妳。如果可以完善的話,我後面會講。

包裝測試;

導入Java . awt . *;

導入Java . awt . event . *;

導入javax . swing . *;

公共類Z擴展JFrame實現ActionListener,FocusListener {

private String[] total = { "1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 0 "," 0 ",", "=", "/" };//總編號組

private String[] other = { "clear "," delete " };//其他函數數組

私有String[] symbol = { "+","-"," * ","/" };//符號數組

私有字符串multinumber = "0 ",operator1 = " ",exists = " ",operator2 = null,s =

//存在多號運算符1(運算符)。

私雙d1,D2 = 0;

private int Count = 0;

JPanel jp total = new JPanel();//常規面板

JTextField jtexternal = new JTextField(" 0 ");//外部文本框

JTextField jtinside = new JTextField();//內部文本框

JPanel jptop 1 = new JPanel();//頂部面板1

JPanel jptop 2 = new JPanel();//頂部面板2

JPanel jp middle = new JPanel();//中間面板

公共Z() {

jp total . set layout(new BorderLayout());

//使用邊界布局管理器

jptop 1 . set layout(new GridLayout(2,0));

jptop 1 . add(jtexternal);

jp top 2 . set layout(new GridLayout(0,2));

for(int I = 0;我& lt其他.長度;i++) {

JButton jbi = new JButton("+other[I]);

jbi.setSize(100,10);

jp top 2 . add(jbi);

jbi . addactionlistener(this);

}

jpmiddle . set layout(new GridLayout(4,0));

for(int I = 0;我& lt總長度;i++) {

JButton jbi = new JButton("+total[I]);

jpmiddle . add(jbi);

jbi . addactionlistener(this);

}

jtexternal . addfocuslistener(this);

JT external . add(JT inside);

jtinside . addfocuslistener(this);

//上面三行代碼的作用是讓文本框不被選中。

jptop 1 . add(jptop 2);

jptotal.add(jptop1," North ");

//將jp1作為壹個整體,從頂部開始填寫jp1的內容。

jp total . add(jp middle);

add(jp total);

set visible(true);

setSize(500,500);

this . setlocationrelativeto(null);

this . setdefaultcloseoperation(EXIT _ ON _ CLOSE);

}

// ctrl+/:註釋

public void action performed(action event e)引發了算術異常{

嘗試{

string inputing = e . getactioncommand();

//表示獲取當前輸入內容。

if (inputing.equals(" . ")) {

count++;

}

exists = jtexternal . gettext();

if (operator2!= null) {

int k = 0;

for(int I = 0;我& lt符號長度;i++) {

if(operator 2 . equals(symbol[I]){

k = k+1;

}

if(inputing . equals(symbol[I]){

k = k+1;

}

if (k == 2) {

jtexternal . settext(exists . substring(0,exists . length()-1)+inputing);

operator 1 = inputing;

返回;

}

//四個運算符不能同時存在,新的輸入替換舊的。

if(operator 2 . equals(symbol[I])amp;& ampinputing.equals(" . ")) {

返回;

}

//認識到四個運算符和點不能相鄰出現(四個運算符可以出現在點之後,但不能出現在點之前)

}

}

if(exists . equals(" 0 "){

if (inputing.equals(" . ")||(輸入.等於("+")| |(輸入.等於("-")| |(輸入.等於(" * "))

| |(inputing . equals("/)){

jtexternal . settext(" 0 "+inputing);

}否則{

jtexternal.setText(輸入);

}

}否則{

jtexternal . settext(exists+inputing);

}

//實現如果0之前沒有非零數字,那麽無論輸入多少次0,都只會顯示壹個0。如果輸入其他數字,0將被替換。

if((d 1 = = 0.0 | | D2 = = 0.0)& amp;& ampinputing . equals(" = " & amp;& amp!exists.substring(0,1)。等於(" 0 "){

返回;

}

//實現如果文本框中有數字,輸入等號,它會自己打印出來。

if (inputing.equals("clear")) {

multinumber = " 0

exists =

operator 1 = " ";

jtexternal . settext(" 0 ");

operator2 = null

D2 = 0;

s =

count = 0;

d 1 = 0.0;

//實現,點擊清除,文本框清空為0,所有數據恢復到初始狀態。

} else if(inputing . equals(" delete "){

if(exists . length()& lt;= 1 | | s . equals(" = "){

jtexternal . settext(" 0 ");

multinumber = " 0

exists =

operator 1 = " ";

operator2 = null

D2 = 0;

s =

count = 0;

d 1 = 0;

//實現,按delete刪除剛才輸入的內容。如果刪除最後壹個號碼,效果與按clear相同。

}否則{

if(inputing . equals("+" | | inputing . equals("-" | | inputing . equals(" * ")| | inputing . equals("/"){

count = 1;

}

jtexternal . settext(exists . substring(0,exists . length()-1));

//存儲operator2的最後壹個值。

operator 2 = exists . substring(exists . length()-2,exists . length()-1);

/*

*如果四個運算符後面有數字,則執行。

*所以如果此時按下刪除鍵。

*刪除如果新輸入或四個操作符。

*那麽原來的四個運算符將被新輸入的運算符替換。

*/

}

} else if(!inputing . equals("+" & amp;& amp!inputing . equals("-" & amp;& amp!inputing . equals(" * ")& amp;& amp!inputing.equals("/")

& amp& amp!inputing . equals(" = "){

//判斷輸入是否為數字。

if(s . equals(" = "){

If (exists.equals("除數不能為0 ")| | New Double(exists)= = d 1){

if (inputing.equals(" . ")) {

jtexternal . settext(" 0 "+inputing);

}否則{

jtexternal.setText(輸入);

}

}

s =

}

//計算完成後,可以執行新的操作。

If (multinumber == null) {//多位數計算

multinumber =輸入;

}否則{

multinumber +=輸入;

}

d1 = new Double(多位數);

If(運算符1。equals("+"){//執行四則運算。

if (d2 == 0) {

if(operator 1 . equals(" * ")| | operator 1 . equals("/){

D2 = 1;

}

}

//實現,當四個運算符後沒有數字時,輸入等號後的結果將是符號前的結果,如果符號前只有壹個數字,則自行打印。

d 1 = d 1+D2;

} else if(operator 1 . equals("-"){

d 1 = D2-d 1;

} else if(operator 1 . equals(" *)){

d 1 = d 1 * D2;

} else if(operator 1 . equals("/"){

d 1 = D2/d 1;

}

//使用臨時變量f2實現四則運算。

operator2 =輸入;

} else if(!輸入。equals(" = "){/[四個運算符]輸入等號,繼續計算。

multinumber = " 0

operator 1 = inputing;

D2 = d 1;

operator2 =輸入;

s =

count = 0;

//實現十進制運算

} else {// is [=]得到最終結果。

jtexternal . settext("+d 1);

count = 0;

s = " =

multinumber = " 0

if(operator 2 . equals(" 0 ")& amp;& amp"/".equals(operator1)) {

operator2 = null

d 1 = 0;//用正確的值替換非法的操作值。

拋出新的arithmetic exception();//指定引發異常的條件。

//賦值計算不拋出算術異常。如果要拋出它們,必須指定再次拋出它們的條件。

}否則{

operator 1 = inputing;

operator2 = null

D2 = 0;

}//計算結果

if(inputing . equals(" = " & amp;& amp(d1 == 0.0 || d2 == 0.0)) {

返回;

}

//認識到等號不能重復輸入。

}

} catch(arithmetic exception e 1){

Jtexternal.setText ("Divider不能為0 ");

//指定引發異常內容。

}

}

公共靜態void main(String[] args) {

new Z();

}

公共void焦點增益(焦點事件e) {

JT inside . request focus();

//聚焦內部文本框,實現外部文本框的不聚焦功能。

}

公共void focusLost(FocusEvent e) {

}

}

/*

*目前沒有實現delete刪除輸入值後恢復其他值的功能,後面會改進。比如我想計算1+1,但是輸入等號的時候想改成別的。

*比如我想改成1-1,我按delete刪除1,換成1-1,結果不是0或者我改成11,結果不是65438。

*或者我輸入11的時候,不小心輸入了壹個多余的數字,然後我又做了壹次操作,結果不是我想要的。...

*/

  • 上一篇:誰是周永健?
  • 下一篇:q寵所有鬥的五星神器和神功及其簡介。
  • copyright 2024吉日网官网