模擬電腦計算器原始碼

2021-08-15 01:49:11 字數 3948 閱讀 9902

/**

* 乙個計算器,與windows附件自帶計算器的標準版功能、介面相仿。 但還不支援鍵盤操作。

*/public class calculator extends jframe implements actionlistener ;

/** 計算器上的功能鍵的顯示名字 */

private final string command = ;

/** 計算器左邊的m的顯示名字 */

private final string m = ;

/** 計算器上鍵的按鈕 */

private jbutton keys = new jbutton[keys.length];

/** 計算器上的功能鍵的按鈕 */

private jbutton commands = new jbutton[command.length];

/** 計算器左邊的m的按鈕 */

private jbutton m = new jbutton[m.length];

/** 計算結果文字框 */

private jtextfield resulttext = new jtextfield("0");

// 標誌使用者按的是否是整個表示式的第乙個數字,或者是運算子後的第乙個數字

private boolean firstdigit = true;

// 計算的中間結果。

private double resultnum = 0.0;

// 當前運算的運算子

private string operator = "=";

// 操作是否合法

private boolean operatevalidflag = true;

/*** 建構函式

*/public calculator()

/*** 初始化計算器

*/private void init()

// 運算子鍵用紅色標示,其他鍵用藍色表示

keys[3].setforeground(color.red);

keys[8].setforeground(color.red);

keys[13].setforeground(color.red);

keys[18].setforeground(color.red);

keys[19].setforeground(color.red);

// 初始化功能鍵,都用紅色標示。將功能鍵放在乙個畫板內

jpanel commandspanel = new jpanel();

// 用網格布局器,1行,3列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素

commandspanel.setlayout(new gridlayout(1, 3, 3, 3));

for (int i = 0; i < command.length; i++)

// 初始化m鍵,用紅色標示,將m鍵放在乙個畫板內

jpanel calmspanel = new jpanel();

// 用網格布局管理器,5行,1列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素

calmspanel.setlayout(new gridlayout(5, 1, 3, 3));

for (int i = 0; i < m.length; i++)

// 下面進行計算器的整體布局,將calckeys和command畫板放在計算器的中部,

// 將文字框放在北部,將calms畫板放在計算器的西部。

// 新建乙個大的畫板,將上面建立的command和calckeys畫板放在該畫板內

jpanel panel1 = new jpanel();

// 畫板採用邊界布局管理器,畫板裡元件之間的水平和垂直方向上間隔都為3象素

panel1.setlayout(new borderlayout(3, 3));

panel1.add("north", commandspanel);

panel1.add("center", calckeyspanel);

// 建立乙個畫板放文字框

jpanel top = new jpanel();

top.setlayout(new borderlayout());

top.add("center", resulttext);

// 整體布局

getcontentpane().setlayout(new borderlayout(3, 5));

getcontentpane().add("north", top);

getcontentpane().add("center", panel1);

getcontentpane().add("west", calmspanel);

// 為各按鈕新增事件偵聽器

// 都使用同乙個事件偵聽器,即本物件。本類的宣告中有implements actionlistener

for (int i = 0; i < keys.length; i++)

for (int i = 0; i < command.length; i++)

for (int i = 0; i < m.length; i++)

}/**

* 處理事件

*/public void actionperformed(actionevent e) else if (label.equals(command[1])) else if (label.equals(command[2])) else if ("0123456789.".indexof(label) >= 0) else

}/**

* 處理backspace鍵被按下的事件

*/private void handlebackspace() else }}

/*** 處理數字鍵被按下的事件

** @param key

*/private void handlenumber(string key) else if ((key.equals(".")) && (resulttext.gettext().indexof(".") < 0)) else if (!key.equals("."))

// 以後輸入的肯定不是第乙個數字了

firstdigit = false;

}/**

* 處理c鍵被按下的事件

*/private void handlec()

/*** 處理運算子鍵被按下的事件

** @param key

*/private void handleoperator(string key) else

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

} else if (operator.equals("+")) else if (operator.equals("-")) else if (operator.equals("*")) else if (operator.equals("sqrt")) else if (operator.equals("%")) else if (operator.equals("+/-")) else if (operator.equals("="))

if (operatevalidflag) else

}// 運算子等於使用者按的按鈕

operator = key;

firstdigit = true;

operatevalidflag = true;

}/**

* 從結果文字框中獲取數字

** @return

*/private double getnumberfromtext() catch (numberformatexception e)

return result;

}public static void main(string args)

}

c 語言簡單計算器原始碼

main.c 計算器 created by qianfeng on 14 7 15.iphone自帶計算器不夠好,由於你技術出眾,你被安排去開發一款ios新式計算器。專案經理認為計算器第一版要支援表示式求值,所以要求如下 輸入任意表示式 求出他的值 支援負數,不支援小數 這裡支援6種表示式 優先順序...

2的次方計算器原始碼

背景 4月份寫的,出差的時候無聊,坐車途中暈頭轉向地在草稿本上寫方案,走路時心算公式,最後還是給寫出來了!過程 核心命令 set a 命令本身有bug,只能最大輸出結果為10位的數字,相當於不能算超過2的30次方的數。對於如何解決此bug,具體還有待研究。功能 輸入端增加純數字的和超數字的判斷。亮點...

c 語言簡單計算器原始碼

main.c 計算器 created by qianfeng on 14 7 15.iphone自帶計算器不夠好,由於你技術出眾,你被安排去開發一款ios新式計算器。專案經理認為計算器第一版要支援表示式求值,所以要求如下 輸入任意表示式 求出他的值 支援負數,不支援小數 這裡支援6種表示式 優先順序...