代码
对一个数运算,倒数,平方根,平方,百分号,正负数运算
private void doOperator1(String key) {
operator = key; // 运算符为用户按的按钮
if (operator.equals("1/x")) {
// 倒数运算
if (resultNum == 0) {
operateValidFlag = false; //操作不合法
resultText.setText("零没有倒数");
} else {
resultNum = 1 / getNumberFromText();
}
} else if (operator.equals("√x")) {
// 平方根运算
if (resultNum < 0) {
operateValidFlag = false; //操作不合法
resultText.setText("根号内不能为负");
} else {
resultNum = Math.sqrt(getNumberFromText());
}
} else if (operator.equals("X²")) {
// 平方运算
resultNum = getNumberFromText()*getNumberFromText();
} else if (operator.equals("%")) {
// 百分号运算,除以100
resultNum = getNumberFromText() / 100;
} else if (operator.equals("+/-")) {
// 正数负数运算
resultNum = getNumberFromText() * (-1);
if (operateValidFlag) {
// 操作合法的情况下,结果为小数保留小数点后4位,整数正常输出
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(new DecimalFormat("0.0000").format(resultNum)));
}
}
firstDigit = true;
operateValidFlag = true;
}
}
对两个数运算,加减乘除
private void doOperator2(String key) {
if (operator.equals("÷")) {
// 除法运算
// 如果当前结果文本框中的值等于0
if (getNumberFromText() == 0.0) {
operateValidFlag = false; //操作不合法
resultText.setText("除数不能为零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("+")) {
// 加法运算
resultNum += getNumberFromText();
} else if (operator.equals("-")) {
// 减法运算
resultNum -= getNumberFromText();
} else if (operator.equals("X")) {
// 乘法运算
resultNum *= getNumberFromText();
} else if (operator.equals("=")) {
// 赋值运算
resultNum = getNumberFromText();
}
界面设计部分代码
setTitle("计算器");
setSize(685,747);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
resultText = new JTextField("0");
getContentPane().add(resultText);
getContentPane().setBackground(color4);
resultText.setFont(new Font("楷体",Font.BOLD,50)); //设置文本框中文字的字体以及大小,加粗
resultText.setHorizontalAlignment(JTextField.RIGHT); //文本框中数字右对齐
resultText.setEditable(false); //不能修改文本框中的数字
resultText.setBorder(null); // 删除边框
resultText.setBounds(0, 10, 672, 91);
resultText.setBackground(color4);
JButton btnNewButton = new JButton("%");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doOperator1(e.getActionCommand());
}
});
btnNewButton.setForeground(SystemColor.windowBorder);
btnNewButton.setFont(new Font("宋体", Font.PLAIN, 35));
btnNewButton.setBounds(0, 110, 168, 100);
btnNewButton.setBackground(color1);
btnNewButton.setBorder(null);
getContentPane().add(btnNewButton);
JButton btnCe = new JButton("CE");
btnCe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resultText.setText("0");
}
});
运行界面