首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Swing 計算器開發實戰:基本運算、倒數、退格、正負號功能完整實現

     編輯:程式設計疑難解答

功能需求

  • 基本四則運算(如 123+456=579.0)。
  • 倒數運算(1/x)。
  • 退格刪除最後一個字符(含計算結果)。
  • 正負號切換(+/-)。
  • 文本框直接輸入/修改數值。

架構設計

  1. 界面:JFrame + JTextField(顯示) + JPanel(GridLayout 按鈕網格)。
  2. 狀態變量:double firstOperand、String operator、boolean startNewInput。
  3. 事件處理:所有按鈕共用一個 ActionListener,通過 actionCommand 分發。

核心邏輯片段

// 數字鍵
if ("0123456789.".contains(cmd)) {
    if (startNewInput) { display.setText(cmd); startNewInput = false; }
    else display.setText(display.getText() + cmd);
}
// 運算符
else if ("+-*/".contains(cmd)) {
    if (!startNewInput) calculate(); // 連續運算
    firstOperand = Double.parseDouble(display.getText());
    operator = cmd;
    startNewInput = true;
}
// 等號
else if ("=".equals(cmd)) {
    calculate();
    startNewInput = true;
}
// 倒數 1/x
else if ("1/x".equals(cmd)) {
    double val = Double.parseDouble(display.getText());
    display.setText(String.valueOf(1.0 / val));
}
// 退格
else if ("←".equals(cmd)) {
    String txt = display.getText();
    if (txt.length() > 0) display.setText(txt.substring(0, txt.length()-1));
}
// 正負號 +/-
else if ("+/-".equals(cmd)) {
    String txt = display.getText();
    if (txt.startsWith("-")) display.setText(txt.substring(1));
    else if (!txt.equals("0")) display.setText("-" + txt);
}

calculate() 方法

void calculate() {
    double second = Double.parseDouble(display.getText());
    double result = 0;
    switch (operator) {
        case "+": result = firstOperand + second; break;
        case "-": result = firstOperand - second; break;
        case "*": result = firstOperand * second; break;
        case "/": result = second != 0 ? firstOperand / second : Double.NaN; break;
    }
    display.setText(String.valueOf(result));
}

運行截圖

參考博客完整代碼與截圖:Java 計算器實現

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