1. 程式人生 > 其它 >實現一個簡單的計算器(JAVA程式碼詳細註釋)

實現一個簡單的計算器(JAVA程式碼詳細註釋)

技術標籤:Javajavagui

在這裡插入圖片描述
如上圖,實現一個計算器的+,-,*,/與重置的功能,具有異常處理功能
在這裡插入圖片描述
話不多說上程式碼:

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不能做除數加進去就好。可以嘗試自己去實現。