计算器的程序代码文档格式.docx
《计算器的程序代码文档格式.docx》由会员分享,可在线阅读,更多相关《计算器的程序代码文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
finalButtonbtn3=newButton("
3"
finalButtonbtn4=newButton("
4"
finalButtonbtn5=newButton("
5"
finalButtonbtn6=newButton("
6"
finalButtonbtn7=newButton("
7"
finalButtonbtn8=newButton("
8"
finalButtonbtn9=newButton("
9"
finalButtonbtn0=newButton("
0"
finalButtonbtn10=newButton("
+"
finalButtonbtn11=newButton("
-"
finalButtonbtn12=newButton("
*"
finalButtonbtn13=newButton("
/"
finalButtonbtn14=newButton("
("
finalButtonbtn15=newButton("
)"
finalButtonbtn16=newButton("
="
finalButtonbtn17=newButton("
C"
finalButtonbtn18=newButton("
+/-"
finalButtonbtn19=newButton("
."
publicCounter()
fr.setLayout(null);
//设置布局管理器设置为空
fr.setSize(330,360);
//设置计算器窗口的大小
fr.setVisible(true);
//设置不会随窗口大小变化而变化
jf=newTextArea("
300,20,TextArea.SCROLLBARS_NONE);
//设置文本区域的大小,不为文本区创建或显示任何滚动条
//设置命令按钮的坐标以及大小
btn1.setBounds(10,90,50,30);
btn2.setBounds(70,90,50,30);
btn3.setBounds(130,90,50,30);
btn4.setBounds(190,90,50,30);
btn5.setBounds(10,150,50,30);
btn6.setBounds(70,150,50,30);
btn7.setBounds(130,150,50,30);
btn8.setBounds(190,150,50,30);
btn9.setBounds(10,210,50,30);
btn0.setBounds(70,210,50,30);
btn19.setBounds(130,210,50,30);
btn18.setBounds(190,210,50,30);
btn10.setBounds(10,270,50,30);
btn11.setBounds(70,270,50,30);
btn12.setBounds(130,270,50,30);
btn13.setBounds(190,270,50,30);
btn17.setBounds(250,90,50,30);
btn14.setBounds(250,150,50,30);
btn15.setBounds(250,210,50,30);
btn16.setBounds(250,270,50,30);
jf.setBounds(10,20,300,20);
jf.setEditable(false);
//设置不能被编辑和修改
//将命令按钮以及文本框添加到面板中
fr.add(jf);
fr.add(btn1);
fr.add(btn2);
fr.add(btn3);
fr.add(btn4);
fr.add(btn5);
fr.add(btn6);
fr.add(btn7);
fr.add(btn8);
fr.add(btn9);
fr.add(btn0);
fr.add(btn10);
fr.add(btn11);
fr.add(btn12);
fr.add(btn13);
fr.add(btn14);
fr.add(btn15);
fr.add(btn16);
fr.add(btn17);
fr.add(btn18);
fr.add(btn19);
ActionListenerlistener=newButtonListener();
//创建新的监听事件listener
//将命令按钮添加到监听事件listener中
btn1.addActionListener(listener);
btn2.addActionListener(listener);
btn3.addActionListener(listener);
btn4.addActionListener(listener);
btn5.addActionListener(listener);
btn6.addActionListener(listener);
btn7.addActionListener(listener);
btn8.addActionListener(listener);
btn9.addActionListener(listener);
btn0.addActionListener(listener);
btn10.addActionListener(listener);
btn11.addActionListener(listener);
btn12.addActionListener(listener);
btn13.addActionListener(listener);
btn14.addActionListener(listener);
btn15.addActionListener(listener);
btn16.addActionListener(listener);
btn17.addActionListener(listener);
btn18.addActionListener(listener);
btn19.addActionListener(listener);
//设置关闭按钮
fr.addWindowListener(newWindowAdapter()//创建新的监听事件
{
publicvoidwindowClosing(WindowEvente)
System.exit(0);
}
});
fr.show();
//显示;
}
classButtonListenerimplementsActionListener//创建监听事件ButtonListener以ActionListener类为接口
{
publicvoidactionPerformed(ActionEvente)
{
Buttonsrc=(Button)e.getSource();
//对按钮状态进行跟踪,src记录点击命令按钮的响应
try
if(src==btn1)//如果点击btn1
{
if(n==0){jf.setText("
n=1;
}//如果在此之前没有输入,则设置文本框的值为点击的数字,设置n=1
elseif(n==1){jf.append("
}//如果在此之前有输入,则在字符串后面添加点击的数字
if(add1>
0)//设置可以输入运算符
{
--add1;
}
}
if(src==btn2)
{
}
elseif(n==1){jf.append("
}
0)
if(src==btn3)
if(src==btn4)
if(src==btn5)
--add1;
if(src==btn6)
if(src==btn7)
if(src==btn8)
if(src==btn9)
if(src==btn0)
}
if(src==btn10)//如果点击“+”
if(add1==0)//判断是否可以输入运算符
jf.append("
//在表达式后面点击添加运算符
++add1;
//设置不可输入运算符
if(add2>
0)//判断前面是否输入小数点
--add2;
//设置可以输入小数点
if(src==btn11)
if(add1==0)
if(src==btn12)
if(src==btn13)
if(src==btn14)//点击“(”时
if(add1!
=0)//如果前面有运算符则可以输入“(”
++add3;
//对“(”进行计数
++add5;
if(add4==1)//设置负号可用
--add4;
0)//设置小数点可用
if(src==btn15)
if(add3>
0)//判断是否可以输入“)”
--add3;
++add6;
if(src==btn16)//如果点击等号的按钮
try
Stringstr1;
Stringstr=jf.getText();
//设置str为文本框的内容
Calculatetmp=newCalculate();
doubleend;
end=tmp.result(str);
//将str的内容传递给result()函数进行计算
str1=Double.toString(end);
//将str转化为字符型
jf.setText(str1);
//设置文本框的值为str1
}catch(Exceptionex){//抛出异常
if(add1!
=0)//如果以运算符结尾
{
JOptionPane.showMessageDialog(null,"
表达式错误!
"
//弹出窗口“表达式错误!
”
}
if(add5!
=add6)//如果“(”和“)”的个数不匹配
表达式中"
“(”"
和"
“)”"
个数不匹配"
//弹出窗口“表达式中的(和)个数不匹配!
else//如果被除数为0
表达式中被除数不能为0"
//弹出窗口“表达式中被除数不能为0!
if(src==btn17)//对清屏进行处理
jf.setText("
//设置文本框为0
n=0;
if(src==btn18)//对负号进行处理
inti=jf.getText().length();
if(i!
=1&
&
add4==0&
add3>
0)//
{
jf.append("
++add4;
elseif(i==1&
add4==0)
jf.setText("
++add4;
n=1;
if(add1==0)
if(src==btn19)
if(add1==0&
add2==0)
++add2;
}catch(Exceptionex){
}
publicclassCalculate
publicdoubleresult(Stringexpstr)
Stacks1=newStack();
//创建一个新的堆栈s1
charch;
String[]hou=newString[100];
//安优先级处理后的内容进行存储
String[]hao=newString[100];
//对表达式的内容进行存储
Stringout;
inti=0;
intj=0;
//对符号个数技术需要计算的数字进行计数
intfu=0;
while(i<
expstr.length())
Stringshu="
;
ch=expstr.charAt(i);
//将i出的字符赋值给ch
switch(ch)
case'
+'
:
//如果ch==‘+’
shu=shu+ch;
hao[j]=shu;
//存入数组hao[]中
i++;
//进行下一次判断
j++;
break;
-'
if(i>
0&
expstr.charAt(i-1)=='
('
)//对负数进行判断
{
fu=1;
i++;
break;
if(i==0)//对负数进行判断
else//如果不是负数
*'
/'
)'
default:
while((ch>
='
0'
&
ch<
9'
)||(ch=='
.'
))//对数字和小数点进行处理
if(i<
expstr.length())ch=expstr.charAt(i);
//判断是否在表达式的末尾
elsech='
='
if(fu==1){out=shu;
shu='
+out;
fu=0;
}//对负号进行处理。
intt=0,o=0;
while(t<
j)//对优先级进行判断
if(hao[t].equ