做出来的效果:
程序代码
该程序所需要的属性:
private JFrame frame;
private JTextField textField;
String s="";//显示算式
long[] num=new long[100];//储存运算数据
char[] b=new char[100];//储存运算符
int i=0;//输入运算数据和运算符是给数组计数
int c;//计算结果时计数
long jieguo=0;//计算结果
主要按钮的代码:
1.数字键1
JButton button_19 = new JButton("1");
button_19.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"1";
textField.setText(s);//在文本框中显示相应数字
num[i]=num[i]*10+1;
}
});
button_19.setBounds(14, 308, 60, 41);
frame.getContentPane().add(button_19);
2.加号键
JButton button_27 = new JButton("+");
button_27.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"+";
textField.setText(s);//在文本框中显示相应运算符
b[i]='+';
i++;
}
});
button_27.setBounds(236, 200, 60, 95);
frame.getContentPane().add(button_27);
3.等于键
JButton button_23 = new JButton("=");
button_23.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch(b[0])//为了方便用循环来计算,我想到的是先把第一次计算提出来
{
case '+':
{
jieguo=num[0]+num[1];
break;
}
case '-':
{
jieguo=num[0]-num[1];
break;
}
case '*':
{
jieguo=num[0]*num[1];
break;
}
case '/':
{
jieguo=num[0]/num[1];
break;
}
}
c++;
for(c=1;c<i;c++)
{
switch(b[c])
{
case '+':
{
jieguo=jieguo+num[c+1];
break;
}
case '-':
{
jieguo=jieguo-num[c+1];
break;
}
case '*':
{
jieguo=jieguo*num[c+1];
break;
}
case '/':
{
jieguo=jieguo/num[c+1];
break;
}
}
}
textField.setText(String.valueOf(jieguo));//.setText()的参数需要String,所以用String.valueOf()将long转换为String
}
});
button_23.setBounds(236, 308, 60, 95);
frame.getContentPane().add(button_23);
4.清空键
JButton btnC = new JButton("C");//清空
btnC.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s="";
textField.setText(s);//清空文本框
for(c=0;c<100;c++)
{
num[c]=0;//清空运算数据
b[c]=0;//清空运算符
}
i=0;
c=0;
jieguo=0;
}
});
btnC.setBounds(14, 146, 60, 41);
frame.getContentPane().add(btnC);
测试结果