1. 程式人生 > >java實現計算器(最低版1.0,只能實現從左到右依次計算)——初學者入門

java實現計算器(最低版1.0,只能實現從左到右依次計算)——初學者入門

軟體:eclipse
才開始用java設計東西,我覺得這個程式適用於初步想設計計算器的同學用,雖然很簡單,但我會慢慢更新自己所寫計算器,實現更強的邏輯。

例如:61-7*4=216(從左至右的簡單邏輯,還不完善)

程式碼:(有詳細註釋)

//大佬不適合看!
package layout;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.Border; public class CalculatorFrame extends JFrame { // 屬性 JTextField Text = null; boolean beginNum = false; String num1 =
null; String num2 = null; String operator = null; // 方法 public CalculatorFrame() { setTitle("Borderlayout Demo"); setSize(250, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); // 獲取主內容面板 Container contentPane = this.getContentPane(); // 設定佈局方式:邊框型佈局 contentPane.setLayout(new BorderLayout()
); // 單獨處理NORTH佈局 // 獲得中間容器面板並放在主面板的NORTH JPanel pnlNorth = new JPanel(); // 邊框型佈局 pnlNorth.setLayout(new BorderLayout()); // 放置 contentPane.add(BorderLayout.NORTH, pnlNorth); // 文字框 Text = new JTextField(); // 按鈕(清零) JButton btnOK = new JButton("C"); // 放置 pnlNorth.add(BorderLayout.CENTER, Text); pnlNorth.add(BorderLayout.EAST, btnOK); // 單獨處理CENTER佈局 // //獲得中間容器面板並放在主面板的CENTER String[] s = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3","*", "0", "." ,"/", "=" }; JPanel pnlNorthTow = new JPanel(); // 放置 contentPane.add(BorderLayout.CENTER, pnlNorthTow); // 網狀佈局 pnlNorthTow.setLayout(new GridLayout(0, 4, 3, 3)); // 內部類 ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent event) { String cmd = event.getActionCommand(); // JOptionPane.showMessageDialog(null, cmd); /*if (cmd.equals("0") || cmd.equals("1") || cmd.equals("2") || cmd.equals("3") || cmd.equals("4") || cmd.equals("5") || cmd.equals("6") || cmd.equals("7") || cmd.equals("8") || cmd.equals("9")) {*/ if("0123456789".contains(cmd)){ // 輸入1時(61顯示) if (beginNum) { Text.setText(Text.getText() + cmd); } // 輸入6時 else { Text.setText(cmd); beginNum = true; } } // 輸入“—”時 //if (cmd.equals("+") || cmd.equals("-") || cmd.equals("*") || cmd.equals("/")) { if("+-*/".contains(cmd)){ beginNum = false; // 當operator為空的時候,與equals的區別 if (operator == null) { // 文字框內容賦給num1 num1 = Text.getText(); // 減號賦給operator operator = cmd; // 清空文字框 Text.setText(null); } // operator不為空時(輸入*的時候) else { // 把7賦給num2 num2 = Text.getText(); // 計算num1值並放在文字框裡面 if(operator.equals("-")) num1 = String.valueOf(Integer.parseInt(num1) - Integer.parseInt(num2)); if(operator.equals("+")) num1 = String.valueOf(Integer.parseInt(num1) + Integer.parseInt(num2)); if(operator.equals("*")) num1 = String.valueOf(Integer.parseInt(num1) * Integer.parseInt(num2)); if(operator.equals("/")) num1 = String.valueOf(((double)Integer.parseInt(num1) / Integer.parseInt(num2))); Text.setText(num1); // 把*賦給operator operator = cmd; } } //當輸等號時 if ("=".equals(cmd)) { // 結束置為false beginNum = false; // 將4賦給num2 num2 = Text.getText(); if(operator.equals("-")) num1 = String.valueOf(Integer.parseInt(num1) - Integer.parseInt(num2)); if(operator.equals("+")) num1 = String.valueOf(Integer.parseInt(num1) + Integer.parseInt(num2)); if(operator.equals("*")) num1 = String.valueOf(Integer.parseInt(num1) * Integer.parseInt(num2)); if(operator.equals("/")) num1 = String.valueOf(((double)Integer.parseInt(num1) / Integer.parseInt(num2))); Text.setText(String.valueOf(num1)); num1 = null; //num2=null; operator = null; } if("C".equals(cmd)){ Text.setText(null); } } }; for (int i = 0; i < 16; i++) { JButton btn = new JButton(s[i]); pnlNorthTow.add(btn); // 注意各個面板的add // 數字符號等輸入放置 btn.addActionListener(listener); } // 按鈕輸入放置 btnOK.addActionListener(listener); } public static void main(String[] args) { JFrame frame = new CalculatorFrame(); frame.setVisible(true); } }