主要用JAVA編寫一個計算器,能實現(xiàn)加減乘除、開平方、求階乘等計算功能,計算器有圖形化界面,能對異常進(jìn)行處理,并且檢驗輸入的合法性,對不合法的輸入給出具體的提示信息
代碼如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalculatorFrame extends JFrame implements ActionListener {
private JTextField resultDisplay; //結(jié)果顯示文本框
private double num1; //第一個數(shù)字
private double num2; //第二個數(shù)字
private char operator = 'C'; //操作符,默認(rèn)為清屏
public CalculatorFrame()
{
super("計算器");
JPanel mainPanel = new JPanel(); //主面板
mainPanel.setLayout(new BorderLayout());
resultDisplay = new JTextField(); //結(jié)果顯示文本框
resultDisplay.setEditable(false); //不能編輯
mainPanel.add(resultDisplay, BorderLayout.NORTH); //添加到面板上方
JPanel buttonPanel = new JPanel(new GridLayout(5, 4, 5, 5)); //按鈕面板,4行4列,行列間距為5
addButton(buttonPanel, "7");
addButton(buttonPanel, "8");
addButton(buttonPanel, "9");
addButton(buttonPanel, "÷"); //添加按鈕:“7”、“8”、“9”、“÷”
addButton(buttonPanel, "4");
addButton(buttonPanel, "5");
addButton(buttonPanel, "6");
addButton(buttonPanel, "×"); //添加按鈕:“4”、“5”、“6”、“×”
addButton(buttonPanel, "1");
addButton(buttonPanel, "2");
addButton(buttonPanel, "3");
addButton(buttonPanel, "-"); //添加按鈕:“1”、“2”、“3”、“-”
addButton(buttonPanel, "0");
addButton(buttonPanel, ".");
addButton(buttonPanel, "C");
addButton(buttonPanel, "+"); //添加按鈕:“0”、“.”、“C”、“+”
addButton(buttonPanel, "x2");
addButton(buttonPanel, "√");
addButton(buttonPanel, "x!");
addButton(buttonPanel, "="); //添加按鈕:“x2”、“√”、“x!”、“=”
mainPanel.add(buttonPanel, BorderLayout.CENTER); //添加按鈕面板,位于主面板的中央
JButton equalsButton = new JButton("="); //等于號按鈕
equalsButton.addActionListener(this); //添加事件響應(yīng)器
mainPanel.add(equalsButton, BorderLayout.SOUTH); //添加到主面板下方
add(mainPanel); //將主面板添加到窗口中
}
private void addButton(Container panel, String label)
{
JButton button = new JButton(label); //新建按鈕
button.addActionListener(this); //添加事件響應(yīng)器
panel.add(button); //添加到按鈕面板中
}
// 響應(yīng)用戶操作事件
public void actionPerformed(ActionEvent evt)
{
String text = evt.getActionCommand(); //獲取用戶操作
if (text.equals("C"))
{ //清屏
resultDisplay.setText("");
num1 = 0;
num2 = 0;
operator = 'C';
return;
}
if (text.equals("x2"))
{ //平方
num1 = Double.parseDouble(resultDisplay.getText()); //獲取當(dāng)前數(shù)字
resultDisplay.setText(String.valueOf(num1 * num1)); //計算平方并顯示
operator = 'C';
return;
}
if (text.equals("√"))
{ //開方
num1 = Double.parseDouble(resultDisplay.getText()); //獲取當(dāng)前數(shù)字
if (num1 < 0)
{ //負(fù)數(shù)不能開方
resultDisplay.setText("不能對負(fù)數(shù)求平方根");
return;
}
resultDisplay.setText(String.valueOf(Math.sqrt(num1))); //計算開方并顯示
operator = 'C';
return;
}
if (text.equals("x!"))
{ //階乘
num1 = Double.parseDouble(resultDisplay.getText()); //獲取當(dāng)前數(shù)字
resultDisplay.setText(String.valueOf(factorial(num1))); //計算階乘并顯示
operator = 'C';
return;
}
if (text.equals("+") || text.equals("-") || text.equals("×") ||
text.equals("÷"))
{ //基本運(yùn)算
num1 = Double.parseDouble(resultDisplay.getText()); //獲取第一個數(shù)字
operator = text.charAt(0); //獲取操作符
resultDisplay.setText(""); //清空結(jié)果文本框
return;
}
if (text.equals("="))
{ //計算結(jié)果
num2 = Double.parseDouble(resultDisplay.getText()); //獲取第二個數(shù)字
switch (operator) { //選擇合適的操作符進(jìn)行計算
case '+':
resultDisplay.setText(String.valueOf(num1 + num2));
break;
case '-':
resultDisplay.setText(String.valueOf(num1 - num2));
break;
case '×':
resultDisplay.setText(String.valueOf(num1 * num2));
break;
case '÷':
if (num2 == 0)
{ //除數(shù)不能為零
resultDisplay.setText("除數(shù)不能為零");
return;
}
resultDisplay.setText(String.valueOf(num1 / num2));
break;
}
operator = 'C'; //清除操作符
return;
}
resultDisplay.setText(resultDisplay.getText() + text); //輸出數(shù)字或小數(shù)點
}
// 計算階乘
public static double factorial(double num)
{
if (num == 0)
return 1;
double result = 1;
for (int i = 1; i <= num; i++)
{
result *= i;
}
return result;
}
public static void main(String[] args)
{
CalculatorFrame calculator = new CalculatorFrame();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calculator.setSize(300, 350);
calculator.setVisible(true);
}
}
?文章來源地址http://www.zghlxwxcb.cn/news/detail-509579.html文章來源:http://www.zghlxwxcb.cn/news/detail-509579.html
?
到了這里,關(guān)于Java編寫計算器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!