JAVA制作一个简单的计算器。能实现两个数的加、减、乘、除四则运算

如图,求代码... 如图,求代码 展开
 我来答
教技141209
2015-07-03 · TA获得超过108个赞
知道答主
回答量:56
采纳率:66%
帮助的人:50.2万
展开全部
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;

public class Demo03 extends JApplet implements ActionListener {
boolean i = true;
private JButton num0 = new JButton("0");
private JButton num1 = new JButton("1");
private JButton num2 = new JButton("2");
private JButton num3 = new JButton("3");
private JButton num4 = new JButton("4");
private JButton num5 = new JButton("5");
private JButton num6 = new JButton("6");
private JButton num7 = new JButton("7");
private JButton num8 = new JButton("8");
private JButton num9 = new JButton("9");
private JButton zuok = new JButton("(");
private JButton youk = new JButton(")");
private JButton dian = new JButton(".");
private JButton NULL = new JButton("N");
private JButton plu = new JButton("+");
private JButton min = new JButton("-");
private JButton mul = new JButton("x");
private JButton div = new JButton("/");
private JButton equ = new JButton("=");
private JButton cle = new JButton("C");// 清除
private JTextField space = new JTextField(15);

public void init() {
JPanel text = new JPanel();
text.setLayout(new FlowLayout());
text.add(space);
JPanel buttons = new JPanel();
buttons.setLayout(new GridLayout(5, 4));
buttons.add(num9);
buttons.add(num8);
buttons.add(num7);
buttons.add(plu);
buttons.add(num6);
buttons.add(num5);
buttons.add(num4);
buttons.add(min);
buttons.add(num3);
buttons.add(num2);
buttons.add(num1);
buttons.add(mul);
buttons.add(num0);
buttons.add(cle);
buttons.add(equ);
buttons.add(div);

(num9).addActionListener(this);
(num8).addActionListener(this);
(num7).addActionListener(this);
(num6).addActionListener(this);
(num5).addActionListener(this);
(num4).addActionListener(this);
(num3).addActionListener(this);
(num2).addActionListener(this);
(num1).addActionListener(this);
(num0).addActionListener(this);
(plu).addActionListener(this);
(min).addActionListener(this);
(mul).addActionListener(this);
(div).addActionListener(this);
(equ).addActionListener(this);
(cle).addActionListener(this);

setLayout(new BorderLayout());
add("North", text);
add("South", buttons);
space.setText("0");
}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == num9) {
if (i == true) {
space.setText("9");
i = false;
} else
space.setText(space.getText() + '9');
}
if (e.getSource() == num8) {
if (i == true) {
space.setText("8");
i = false;
} else
space.setText(space.getText() + '8');
}
if (e.getSource() == num7) {
if (i == true) {
space.setText("7");
i = false;
} else
space.setText(space.getText() + '7');
}
if (e.getSource() == num6) {
if (i == true) {
space.setText("6");
i = false;
} else
space.setText(space.getText() + '6');
}
if (e.getSource() == num5) {
if (i == true) {
space.setText("5");
i = false;
} else
space.setText(space.getText() + '5');
}
if (e.getSource() == num4) {
if (i == true) {
space.setText("4");
i = false;
} else
space.setText(space.getText() + '4');
}
if (e.getSource() == num3) {
if (i == true) {
space.setText("3");
i = false;
} else
space.setText(space.getText() + '3');
}
if (e.getSource() == num2) {
if (i == true) {
space.setText("2");
i = false;
} else
space.setText(space.getText() + '2');
}
if (e.getSource() == num1) {
if (i == true) {
space.setText("1");
i = false;
} else
space.setText(space.getText() + '1');
}
if (e.getSource() == num0) {
if (i == true) {
space.setText("0");
i = false;
} else
space.setText(space.getText() + '0');
}

if (e.getSource() == plu) {
space.setText(space.getText() + '+');
i = false;
}
if (e.getSource() == min) {
space.setText(space.getText() + '-');
i = false;
}
if (e.getSource() == mul) {
space.setText(space.getText() + '*');
i = false;
}
if (e.getSource() == div) {
space.setText(space.getText() + '/');
i = false;
}
if (e.getSource() == equ) {
space.setText(String.valueOf(Calculator(space.getText())));
i = true;
}
if (e.getSource() == cle) {
space.setText("0");
i = true;
}

}

public double Calculator(String f)// 科学计算
{
int i = 0, j = 0, k;
char c;
StringBuffer s = new StringBuffer();
s.append(f);
s.append('=');
String formula = s.toString();
char[] anArray;
anArray = new char[50];
Stack<Character> mystack = new Stack<Character>();
while (formula.charAt(i) != '=') {
c = formula.charAt(i);
switch (c) {

case '+':
case '-':
while (!mystack.empty() && mystack.peek().charValue() != '(') {
anArray[j++] = mystack.pop().charValue();

}
mystack.push(new Character(c));
i++;
break;
case '*':
case '/':
while (!mystack.empty()
&& (mystack.peek().charValue() == '*' || mystack.peek()
.charValue() == '/')) {
anArray[j++] = mystack.pop().charValue();
}
mystack.push(new Character(c));
i++;
break;
case ' ':
i++;
break;
default:
while ((c >= '0' && c <= '9') || c == '.') {
anArray[j++] = c;
i++;
c = formula.charAt(i);
}
anArray[j++] = '#';
break;
}
}
while (!(mystack.empty()))
anArray[j++] = mystack.pop().charValue();

i = 0;
int count;
double a, b, d;
Stack<Double> mystack1 = new Stack<Double>();
while (i < j) {
c = anArray[i];
switch (c) {
case '+':
a = mystack1.pop().doubleValue();
b = mystack1.pop().doubleValue();
d = b + a;
mystack1.push(new Double(d));
i++;
break;
case '-':
a = mystack1.pop().doubleValue();
b = mystack1.pop().doubleValue();
d = b - a;
mystack1.push(new Double(d));
i++;
break;
case '*':
a = mystack1.pop().doubleValue();
b = mystack1.pop().doubleValue();
d = b * a;
mystack1.push(new Double(d));
i++;
break;
case '/':
a = mystack1.pop().doubleValue();
b = mystack1.pop().doubleValue();
if (a != 0) {
d = b / a;
mystack1.push(new Double(d));
i++;
} else {
System.out.println("Error!");
}
break;
default:
d = 0;
count = 0;
while ((c >= '0' && c <= '9')) {
d = 10 * d + c - '0';
i++;
c = anArray[i];
}
if (c == '.') {
i++;
c = anArray[i];
while ((c >= '0' && c <= '9')) {
count++;
d = d + (c - '0') / Math.pow(10, count);
i++;
c = anArray[i];
}
}
if (c == '#')
mystack1.push(new Double(d));
i++;
break;
}
}
return (mystack1.peek().doubleValue());
}
}

你看看这个合适不?

更多追问追答
追问
不行呢,太复杂了,我只要图片的那种代码
追答

做是做好了,但是系统提示字数超过了限制。 要的话你就

把你QQ给我。--。不能在这回复。还有这个你说简单的,所以就没有限制文本框输入的内容,如果输入的是字符串的话,会报错。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式