求解:写一段Java程序,要求简单实现计算器的功能,是GUI编程,代码简洁最好。
1个回答
展开全部
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
//暂时不用考虑连加问题
//点第一个运算符 点运算符 点第二个运算符 点=出结果
public class 计算器 implements ActionListener {
JTextField jtf = new JTextField(10);
private boolean append = false;
private String op1 = "0";
private String operator = "+";
@Override
public void actionPerformed(ActionEvent e) {
String comn = e.getActionCommand();
// 处理数字
if ("0123456789".indexOf(comn) != -1) {
if (append) {// 追加
String temp = jtf.getText();
jtf.setText(temp + comn);
} else {// 替换
jtf.setText(comn);
append = true;
}
}
// 处理运算符
else if ("+-*/".indexOf(comn) != -1) {
op1 = jtf.getText();
operator = comn;
append = false;
} else if ("=".indexOf(comn) != -1) {
String op2 = jtf.getText();
double d1 = Double.parseDouble(op1);
double d2 = Double.parseDouble(op2);
if ("+".equals(operator)) {
d1 = d1 + d2;
} else if ("-".equals(operator)) {
d1 = d1 - d2;
} else if ("*".equals(operator)) {
d1 = d1 * d2;
} else if ("/".equals(operator)) {
d1 = d1 / d2;
}
jtf.setText(d1 + "");
append = false;
} else if (".".equals(comn)) {
String temp = jtf.getText();
if (temp.indexOf(".") == -1) {
jtf.setText(temp + ".");
append = true;
}
} else if ("+/-".equals(comn)) {
String temp = jtf.getText();
if (temp.startsWith("-1")) {
jtf.setText(temp.substring(1));
} else {
jtf.setText("-" + temp);
}
} else if ("Backspace".equals(comn)) {
String temp = jtf.getText();
if (temp.length() > 0) {
jtf.setText(temp.substring(0, temp.length() - 1));
}
} else if ("CE".equals(comn) || "C".equals(comn)) {
jtf.setText("0");
append = false;
}
}
public 计算器() {
JFrame jf = new JFrame("计算器");
jf.add(jtf, BorderLayout.NORTH);
String[] s1 = { "Backspace", "CE", "C", "+", "7", "8", "9", "/", "4",
"5", "6", "*", "1", "2", "3", "-", "0", "+/-", ".", "=" };
JPanel jp = new JPanel();
jf.add(jp, BorderLayout.CENTER);
GridLayout gl = new GridLayout(5, 4);
jp.setLayout(gl);
JButton[] jb = new JButton[s1.length];
for (int i = 0; i < s1.length; i++) {
jb[i] = new JButton(s1[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);
}
jf.add(jp);
jtf.setEditable(false);
jf.setLocation(400, 300);
jf.pack();
jf.setResizable(false);// 设置窗口的大小不可变
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args) {
new 计算器();
}
}
这个功能比较简单 不知道能不能满足要求
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
//暂时不用考虑连加问题
//点第一个运算符 点运算符 点第二个运算符 点=出结果
public class 计算器 implements ActionListener {
JTextField jtf = new JTextField(10);
private boolean append = false;
private String op1 = "0";
private String operator = "+";
@Override
public void actionPerformed(ActionEvent e) {
String comn = e.getActionCommand();
// 处理数字
if ("0123456789".indexOf(comn) != -1) {
if (append) {// 追加
String temp = jtf.getText();
jtf.setText(temp + comn);
} else {// 替换
jtf.setText(comn);
append = true;
}
}
// 处理运算符
else if ("+-*/".indexOf(comn) != -1) {
op1 = jtf.getText();
operator = comn;
append = false;
} else if ("=".indexOf(comn) != -1) {
String op2 = jtf.getText();
double d1 = Double.parseDouble(op1);
double d2 = Double.parseDouble(op2);
if ("+".equals(operator)) {
d1 = d1 + d2;
} else if ("-".equals(operator)) {
d1 = d1 - d2;
} else if ("*".equals(operator)) {
d1 = d1 * d2;
} else if ("/".equals(operator)) {
d1 = d1 / d2;
}
jtf.setText(d1 + "");
append = false;
} else if (".".equals(comn)) {
String temp = jtf.getText();
if (temp.indexOf(".") == -1) {
jtf.setText(temp + ".");
append = true;
}
} else if ("+/-".equals(comn)) {
String temp = jtf.getText();
if (temp.startsWith("-1")) {
jtf.setText(temp.substring(1));
} else {
jtf.setText("-" + temp);
}
} else if ("Backspace".equals(comn)) {
String temp = jtf.getText();
if (temp.length() > 0) {
jtf.setText(temp.substring(0, temp.length() - 1));
}
} else if ("CE".equals(comn) || "C".equals(comn)) {
jtf.setText("0");
append = false;
}
}
public 计算器() {
JFrame jf = new JFrame("计算器");
jf.add(jtf, BorderLayout.NORTH);
String[] s1 = { "Backspace", "CE", "C", "+", "7", "8", "9", "/", "4",
"5", "6", "*", "1", "2", "3", "-", "0", "+/-", ".", "=" };
JPanel jp = new JPanel();
jf.add(jp, BorderLayout.CENTER);
GridLayout gl = new GridLayout(5, 4);
jp.setLayout(gl);
JButton[] jb = new JButton[s1.length];
for (int i = 0; i < s1.length; i++) {
jb[i] = new JButton(s1[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);
}
jf.add(jp);
jtf.setEditable(false);
jf.setLocation(400, 300);
jf.pack();
jf.setResizable(false);// 设置窗口的大小不可变
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args) {
new 计算器();
}
}
这个功能比较简单 不知道能不能满足要求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询