首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

12 小時手寫 AWT 計算器:從界面佈局到四則運算邏輯完整實現

     編輯:Java 相關知識

專案結構

  • 主類 createFrame 繼承無,直接管理 Frame、27 個 Button、兩個 TextField。
  • 絕對佈局 (setLayout(null)) 精確控制組件座標與大小。
  • 統一 ButtonHandler 實作 ActionListener 處理所有按鈕事件。

關鍵狀態變量

double op1, op2, op2x, op3; // 運算數、暫存值、結果
char op=0, opx=0, opp=0;    // 當前運算符、上一運算符、等號前運算符
boolean b=false;            // 是否已輸入小數點
boolean c=false;            // 是否剛按過運算符(需清屏)
boolean firstdeng=true;     // 首次按等號標記
double mjia=0;              // 記憶體值

核心邏輯

數字鍵 (0-9)

  • 首次輸入替換初始 0.。
  • c=true 時(剛按運算符),清屏顯示新數字並重置 c。
  • 小數點邏輯:防止重複輸入,b 標記。

運算鍵 (+ - * / %)

  • 讀取當前顯示值為 op2。
  • 若上一運算符非 =,先執行 calculateNow(op1, op, op2) 更新 op1(連續運算支援)。
  • 設置當前運算符,顯示中間結果 op1,置 c=true 等待下一操作數。

等號 (=)

  • 首次按下記錄 op2x = op2(支援連續等號重複上次運算)。
  • 執行 calculateNow(op1, op, op2x),顯示結果,標記 opp='='。

功能鍵

  • BackSpace:刪除最後一字符。
  • CE:清除當前輸入;C:全清狀態重置。
  • +/-、1/x、sqrt、%:即時計算並更新顯示與 op2。
  • 記憶體 MC/MR/MS/M+:操作 mjia,text2 顯示 M 指示器。

計算核心

private double calculateNow(double op1, char op, double op2) {
    switch(op) {
        case '+': return op1+op2;
        case '-': return op1-op2;
        case '*': return op1*op2;
        case '/': return op2==0? op1 : op1/op2; // 除零保護
        case '%': return op2==0? op1 : op1%op2;
        default:  return op2;
    }
}

啟動與視窗居中

public static void main(String[] args) { new createFrame().createWindow(); }
private void centershow(int w, int h, Frame f) {
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    f.setLocation((d.width-w)/2, (d.height-h)/2);
}

心得

純 AWT 手寫計算器鍛鍊了事件驅動、狀態機設計、邊界條件處理(除零、小數點、連續運算),是 GUI 入門的經典實戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved