實現一個簡單的計算器(JAVA程式碼詳細註釋)
阿新 • • 發佈:2020-12-21
如上圖,實現一個計算器的+,-,*,/與重置的功能,具有異常處理功能
話不多說上程式碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;//保留小數
public class SimpleCalculation extends JFrame{
Frame frame = new JFrame();
Frame MistakeWindons = new JFrame();
private JButton SumBtn = new JButton("SUM");
private JButton SubBtn = new JButton("SUB");
private JButton MulBtn = new JButton("MUL");
private JButton DivBtn = new JButton("DIV");
private JButton Reset = new JButton("Reset");
private JTextField FristCount = new JTextField(5);
private JTextField SecondCount = new JTextField(5);
private JTextField Result = new JTextField(10);
private Label Design = new Label("Design by 蔣永超");
private Font Ft = new Font("宋體", Font.BOLD, 18);//設定字型
public SimpleCalculation() {
frame. setResizable(false);//設定為不可最大化
frame.setTitle("簡單計算器");
frame.setLocation(600, 400);//設定視窗位置
frame.setSize(300, 180);//設定視窗大小
frame.setLayout(null);
frame.setVisible(true);
frame.add(FristCount);
FristCount.setBounds(10, 10, 60, 20);
frame.add(SecondCount);
SecondCount.setBounds(90, 10, 60, 20);
frame.add(new Label("=")).setBounds(160, 10, 20, 20);
frame.add(Result);
Result.setBounds(180, 10, 100, 20);
frame.add(Design);
Design.setBounds(60, 40, 200, 30);
frame.add(SumBtn);
SumBtn.setBounds(5, 80, 70, 30);
frame.add(SubBtn);
SubBtn.setBounds(75, 80, 70, 30);
frame.add(MulBtn);
MulBtn.setBounds(145, 80, 70, 30);
frame.add(DivBtn);
DivBtn.setBounds(215, 80, 70, 30);
frame.add(Reset);
Reset.setBounds(215,110,70,30);
Design.setFont(Ft);
MyActionListen();
}
private void MyActionListen(){//事件處理函式
SumBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {//異常處理,如果輸入的不是數字,則提示輸入錯誤
String text0 = FristCount.getText();//將JTextFiled轉換String
String text1 = SecondCount.getText();
double a = Double.valueOf(text0);//將String型別轉換為double
double b = Double.valueOf(text1);
Result.setText(a + b + "");
}
catch (Exception e1){
MistakeWindons.setResizable(false);
MistakeWindons.setLayout(null);
MistakeWindons.setTitle("Wrong Warning!");
MistakeWindons.setSize(200,100);
MistakeWindons.setLocation(550,550);
JLabel Mistake = new JLabel("Wrong Input!!!");
//Mistake.setFont(Ft);
Mistake.setBounds(50,20,100,20);
MistakeWindons.add(Mistake);
MistakeWindons.setVisible(true);
}
}
});
SubBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String text0 = FristCount.getText();//將JTextFiled轉換String
String text1 = SecondCount.getText();
double a = Double.valueOf(text0);//將String型別轉換為double
double b = Double.valueOf(text1);
Result.setText(a - b + "");
}
catch (Exception e1){
MistakeWindons.setResizable(false);
MistakeWindons.setLayout(null);
MistakeWindons.setTitle("Wrong Warning!");
MistakeWindons.setSize(200,100);
MistakeWindons.setLocation(550,550);
JLabel Mistake = new JLabel("Wrong Input!!!");
//Mistake.setFont(Ft);
Mistake.setBounds(50,20,100,20);
MistakeWindons.add(Mistake);
MistakeWindons.setVisible(true);
}
}
});
MulBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String text0 = FristCount.getText();//將JTextFiled轉換String
String text1 = SecondCount.getText();
double a = Double.valueOf(text0);//將String型別轉換為double
double b = Double.valueOf(text1);
Result.setText(a * b + "");
}
catch (Exception e1){
MistakeWindons.setResizable(false);
MistakeWindons.setLayout(null);
MistakeWindons.setTitle("Wrong Warning!");
MistakeWindons.setSize(200,100);
MistakeWindons.setLocation(550,550);
JLabel Mistake = new JLabel("Wrong Input!!!");
Mistake.setBounds(50,20,100,20);
MistakeWindons.add(Mistake);
MistakeWindons.setVisible(true);
}
}
});
DivBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String text0 = FristCount.getText();//將JTextFiled轉換String
String text1 = SecondCount.getText();
double a = Double.valueOf(text0);//將String型別轉換為double
double b = Double.valueOf(text1);
Result.setText(a / b + "");
double c = a/b;
NumberFormat Nf = NumberFormat.getNumberInstance();//保留小數
Nf.setMaximumFractionDigits(6);
Result.setText(Nf.format(c));
}
catch (Exception e1){
MistakeWindons.setResizable(false);
MistakeWindons.setLayout(null);
MistakeWindons.setTitle("Wrong Warning!");
MistakeWindons.setSize(200,100);
MistakeWindons.setLocation(550,550);
JLabel Mistake = new JLabel("Wrong Input!!!");
//Mistake.setFont(Ft);
Mistake.setBounds(50,20,100,20);
MistakeWindons.add(Mistake);
MistakeWindons.setVisible(true);
}
}
});
Reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FristCount.setText("");
SecondCount.setText("");
Result.setText("");
}
});
}
}
class Text{
public static void main(String[] args){
SimpleCalculation simpleCalculation = new SimpleCalculation();
}
}
有個問題沒有考慮到,0不能做除數,
大家可以在DIV按鈕下修改異常處理,把0不能做除數加進去就好。可以嘗試自己去實現。