{
//result表示最後壹次操作的結果;Data1表示當前文本框中顯示的數字,radixPointDepth表示小數位數。
private double result=0,data1=0,radix point depth = 3;
result指示是否劃等號,結果是必需的。
///radixPointIndicate表示小數點是否已命中。
private boolean radix point indicate = false,resultIndicate = false
private char prec = '+';//表示當前運算符。
private JFrame f;//創建壹個窗口
私有TextField tf//創建壹個文本框來存儲結果。
私人按鈕b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b 17;//創建按鈕
私人小組p;//創建/面板容器
公共void init()
{
F=new JFrame(“計算器”);
p = new Panel();//操作界面p
p.setLayout(new GridLayout(4,4));//將P的布局設置為GridLayout,四行四列。
tf =新文本字段(30);
//實例化按鈕
b 1 =新建按鈕(" 7 ");
b2 =新建按鈕(" 8 ");
b3 =新建按鈕(" 9 ");
b4 =新建按鈕(“+”);
b5 =新建按鈕(" 4 ");
b6 =新建按鈕(" 5 ");
b7 =新建按鈕(" 6 ");
b8 =新建按鈕("-");
b9 =新建按鈕(" 1 ");
b 10 =新建按鈕(" 2 ");
b 11 =新建按鈕(" 3 ");
b 12 =新建按鈕(" * ");
b 13 =新建按鈕(" 0 ");
b 14 =新建按鈕(".");
b 15 =新建按鈕(" = ");
b 16 =新建按鈕("/");
b 17 =新建按鈕(“重置”);
f.add(tf," North ");//在框架上方添加文本區域。
f.add(p,“中心”);//將面板添加到框架的中間。
f.add(b17,“南”);//將按鈕(清除)添加到框架的底部。
//向面板添加壹個按鈕
p . add(b 1);
p . add(B2);
p . add(B3);
p . add(B4);
p . add(b5);
p . add(B6);
p . add(B7);
p . add(b8);
p . add(B9);
p . add(b 10);
p . add(b 11);
p . add(b 12);
p . add(b 13);
p . add(b 14);
p . add(b 15);
p . add(b 16);
//為按鈕添加監視器
b 1 . addactionlistener(this);
B2 . addactionlistener(this);
B3 . addactionlistener(this);
B4 . addactionlistener(this);
b5 . addactionlistener(this);
B6 . addactionlistener(this);
B7 . addactionlistener(this);
b8 . addactionlistener(this);
B9 . addactionlistener(this);
b 10 . addactionlistener(this);
b 11 . addactionlistener(this);
b 12 . addactionlistener(this);
b 13 . addactionlistener(this);
b 14 . addactionlistener(this);
b 15 . addactionlistener(this);
b 16 . addactionlistener(this);
b 17 . addactionlistener(this);
f . addwindowlistener(this);//添加監聽幀
f.setSize(300,190);//設置框架的大小
f . set visible(true);//將框架設置為可見
}
//偵聽器,偵聽actionEvent事件。
公共無效操作已執行(操作事件e)
{
字符串s;
s = e . getactioncommand();//s存儲點擊的命令字符串。
//開關開關
開關(s.charAt(0))
{
案例“0”:
案例“1”:
案例“2”:
案例“3”:
案例“4”:
案例“5”:
案例“6”:
案例“7”:
案例“8”:
情況“9”://按“0-9”執行以下操作。
If(resultIndicate) //如果打了等號,直接打了數字,說明開始了壹個新的操作,所有內容都初始化了。
{
結果= 0;
data 1 = 0;
prec = '+';
}
Integer int 1 =新的整數;
If(radix point)//如果命中小數點,
{
radix point depth = radix point depth/10;
data 1 = data 1+(int 1 . int value())* radix point depth;
}
其他
{
data 1 = data 1 * 10+(int 1 . int value());
}
Double display number = new Double(data 1);
TF . settext(display number . tostring());
resultIndicate = false//只要按了數字鍵,就說明新的結果還沒有計算出來,所以是假的。
打破;
大小寫“+”:
大小寫'-':
大小寫' * ':
案例“/”:
Case '='://按"+,-,*,/"並執行以下內容。
if(s.charAt(0)!= ' = ' & amp& amp結果指示)
//如果敲擊+、-、*、/等,結果已經計算出來,則取新的運算符,所以為false;代表連續操作
//prec存儲新抽頭的運算符。
{
prec = s . charat(0);
resultIndicate = false
}
其他
{
//使用開關計算“+、-、*、/”的結果。
開關(精確)
{
大小寫“+”:
結果=結果+數據1;
打破;
大小寫'-':
結果=結果-數據1;
打破;
大小寫' * ':
結果= result * data 1;
打破;
案例“/”:
結果=結果/數據1;
打破;
}
}
radixPointIndicate = false//如果命中運算符or =,則視為操作數結束;所以小數點要清零
radix point depth = 1;
displayNumber=new Double(結果);//在文本框中顯示最新的計算結果。
TF . settext(display number . tostring());
//監聽“=”是否被按下。
if(s.charAt(0)!= ' = ')//如果沒有劃等號,那麽就劃+、-、*、/然後清除data1。
{
data 1 = 0;
prec = s . charat(0);
}
其他
{
resultIndicate = true//僅當等號被劃上時,resultIndicate為true,否則為false。
}
打破;
案例“.”:
radixPointIndicate = true
打破;
}
//監控是否“清晰”;如果是,清除所有數據。
If(s等於(" clear "))
{
結果= 0;
data 1 = 0;
radix point depth = 1;
TF . settext(" ");
}
}