您好,登錄后才能下訂單哦!
這篇“如何使用java代碼實現計算器”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何使用java代碼實現計算器”文章吧。
運行環境:win10 Eclipse IDE for Java Developers - 2020-06
下面是計算器的視圖:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; /* * 計算器 */ public class CaculatorTest implements ActionListener { // 初始框架搭建 JFrame frame = new JFrame("計算器"); JTextField area = new JTextField("0"); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JButton[] buttons = new JButton[20]; String[] buttonsText = { "sqrt", "退格", "C", "/", "7", "8", "9", "*", "4", "5", "6", "-", "1", "2", "3", "+", "0", ".", "+/-", "=" }; boolean point = false; // 用于判斷是否輸入多位小數點 boolean key = true; // 做完運算("=")后繼續輸入數字 String sign = " "; // 用于判斷和記錄運算符號 double temp = 0; // 多次連續運算時,值的寄存處 public CaculatorTest() { initMenu(); initText(); initExtend(); initFrame(); initBorderLayout(); } // 初始化菜單 private void initMenu() { JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("選項"); JMenu m2 = new JMenu("編輯"); JMenu m3 = new JMenu("幫助"); JMenuItem m11 = new JMenuItem("普通型計算器"); JMenuItem m12 = new JMenuItem("科學型計算器"); m1.add(m11); m1.add(m12); m11.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean flag = false; panel2.setVisible(flag); frame.pack(); } }); m12.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean flag = true; panel2.setVisible(flag); frame.pack(); } }); mb.add(m1); mb.add(m2); mb.add(m3); frame.setJMenuBar(mb); } // 初始化輸出文本域 private void initText() { area.setFont(new Font("TimesRoman", Font.PLAIN, 20)); area.setSize(400, 100); area.setHorizontalAlignment(JTextField.RIGHT); // 向右顯示 } // 初始化拓展功能 private void initExtend() { panel2.setLayout(new GridLayout(1,4,1,1)); JButton b1 = new JButton("sin"); JButton b2 = new JButton("cos"); JButton b3 = new JButton("exp"); JButton b4 = new JButton("ln"); b1.setFont(new Font("TimesRoman", Font.PLAIN, 20)); b2.setFont(new Font("TimesRoman", Font.PLAIN, 20)); b3.setFont(new Font("TimesRoman", Font.PLAIN, 20)); b4.setFont(new Font("TimesRoman", Font.PLAIN, 20)); b1.setSize(100, 100); b1.addActionListener(this); b2.setSize(100, 100); b2.addActionListener(this); b3.setSize(100, 100); b3.addActionListener(this); b4.setSize(100, 100); b4.addActionListener(this); panel2.add(b1); panel2.add(b2); panel2.add(b3); panel2.add(b4); } // 初始化計算器基本界面 private void initFrame() { panel1.setLayout(new GridLayout(5, 4, 1, 1)); for (int i = 0; i < buttonsText.length; i++) { JButton button = new JButton(buttonsText[i]); button.setSize(100, 100); button.setFont(new Font("TimesRoman", Font.PLAIN, 20)); button.addActionListener(this); panel1.add(button); } } // 初始化計算器總基本界面 private void initBorderLayout() { frame.setLayout(new BorderLayout()); frame.add(panel1, BorderLayout.SOUTH); // 插入組件 frame.add(area, BorderLayout.NORTH); frame.add(panel2, BorderLayout.CENTER); frame.setLocation(700, 400); frame.setSize(400, 700); frame.setVisible(true); // 設置可見 panel2.setVisible(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 可以關閉 frame.pack(); } public static void main(String[] args) { new CaculatorTest(); } @Override // 事件監聽 public void actionPerformed(ActionEvent e) { String str = e.getActionCommand(); String str2 = area.getText(); if (str == "0" || str == "1" || str == "2" || str == "3" || str == "4" || str == "5" || str == "6" || str == "7" || str == "8" || str == "9") { if (key == false) { area.setText(str2 + str); } else { area.setText(str); key = false; } } else if (str == "C") { area.setText("0"); sign = " "; key = true; } else if (str == ".") { if (point == false) { area.setText(str2 + str); point = true; } else { area.setText("double poits!press C to update!"); point = false; } } else if (str == "+/-") { double num = Double.valueOf(str2); num = -num; area.setText(String.valueOf(num)); } else if (str == "退格") { if (str2.length() == 0) { area.setText("can't be deleted!please press C!"); } else { str2 = str2.substring(0, str2.length() - 1); area.setText(str2); } } else if (str == "sqrt") { area.setText(""); sign = "s"; } else if (str == "sin") { area.setText(""); sign = "sin"; } else if (str == "cos") { area.setText(""); sign = "cos"; } else if (str == "exp") { area.setText(""); sign = "exp"; } else if (str == "ln") { area.setText(""); sign = "ln"; } else { if (str == "+") { if (sign == " ") { sign = "+"; temp = Double.valueOf(str2); area.setText(""); } else if (sign == "-") { if (str2.length() == 0) { sign = "+"; } else { temp = temp - Double.valueOf(str2); sign = "+"; area.setText(""); key = true; } } else if (sign == "+") { if (str2.length() == 0) { sign = "+"; } else { temp = temp + Double.valueOf(str2); sign = "+"; area.setText(""); key = true; } } else if (sign == "*") { if (str2.length() == 0) { sign = "+"; } else { temp = temp * Double.valueOf(str2); sign = "+"; area.setText(""); key = true; } } else if (sign == "/") { if (str2.length() == 0) { sign = "+"; } else if (Double.valueOf(str2) == 0) { area.setText("除數不能為0哦!按 C"); } else { temp = temp / Double.valueOf(str2); area.setText(""); sign = "+"; key = true; } } else if (sign == "s") { if (str2.length() == 0) { sign = "+"; } else { temp = Math.sqrt(Double.valueOf(str2)); area.setText(""); sign = "+"; } } else if (sign == "sin") { if (str2.length() == 0) { sign = "+"; } else { temp = Math.sin(Double.valueOf(str2)); area.setText(""); sign = "+"; } } else if (sign == "cos") { if (str2.length() == 0) { sign = "+"; } else { temp = Math.cos(Double.valueOf(str2)); area.setText(""); sign = "+"; } } else if (sign == "exp") { if (str2.length() == 0) { sign = "+"; } else { temp = Math.exp(Double.valueOf(str2)); area.setText(""); sign = "+"; } } else if (sign == "ln") { if (str2.length() == 0) { sign = "+"; } else { temp = Math.log(Double.valueOf(str2)); area.setText(""); sign = "+"; } } } else if (str == "-") { if (sign == " ") { sign = "-"; temp = Double.valueOf(str2); area.setText(""); } else if (sign == "-") { if (str2.length() == 0) { sign = "-"; } else { temp = temp - Double.valueOf(str2); sign = "-"; area.setText(""); key = true; } } else if (sign == "+") { if (str2.length() == 0) { sign = "-"; } else { temp = temp + Double.valueOf(str2); sign = "-"; area.setText(""); key = true; } } else if (sign == "*") { if (str2.length() == 0) { sign = "-"; } else { temp = temp * Double.valueOf(str2); sign = "-"; area.setText(""); key = true; } } else if (sign == "/") { if (str2.length() == 0) { sign = "-"; } else if (Double.valueOf(str2) == 0) { area.setText("除數不能為0哦!按 C"); } else { temp = temp / Double.valueOf(str2); area.setText(""); sign = "-"; key = true; } } else if (sign == "s") { if (str2.length() == 0) { sign = "-"; } else { temp = Math.sqrt(Double.valueOf(str2)); area.setText(""); sign = "-"; } } else if (sign == "sin") { if (str2.length() == 0) { sign = "-"; } else { temp = Math.sin(Double.valueOf(str2)); area.setText(""); sign = "-"; } } else if (sign == "cos") { if (str2.length() == 0) { sign = "-"; } else { temp = Math.cos(Double.valueOf(str2)); area.setText(""); sign = "-"; } } else if (sign == "exp") { if (str2.length() == 0) { sign = "-"; } else { temp = Math.exp(Double.valueOf(str2)); area.setText(""); sign = "-"; } } else if (sign == "ln") { if (str2.length() == 0) { sign = "-"; } else { temp = Math.log(Double.valueOf(str2)); area.setText(""); sign = "-"; } } } else if (str == "*") { if (sign == " ") { sign = "*"; temp = Double.valueOf(str2); area.setText(""); } else if (sign == "-") { if (str2.length() == 0) { sign = "*"; } else { temp = temp - Double.valueOf(str2); sign = "*"; area.setText(""); key = true; } } else if (sign == "+") { if (str2.length() == 0) { sign = "*"; } else { temp = temp + Double.valueOf(str2); sign = "*"; area.setText(""); key = true; } } else if (sign == "*") { if (str2.length() == 0) { sign = "*"; } else { temp = temp * Double.valueOf(str2); sign = "*"; area.setText(""); key = true; } } else if (sign == "/") { if (str2.length() == 0) { sign = "*"; } else if (Double.valueOf(str2) == 0) { area.setText("除數不能為0哦!按 C"); } else { temp = temp / Double.valueOf(str2); area.setText(""); sign = "*"; key = true; } } else if (sign == "s") { if (str2.length() == 0) { sign = "*"; } else { temp = Math.sqrt(Double.valueOf(str2)); area.setText(""); sign = "*"; } } else if (sign == "sin") { if (str2.length() == 0) { sign = "*"; } else { temp = Math.sin(Double.valueOf(str2)); area.setText(""); sign = "*"; } } else if (sign == "cos") { if (str2.length() == 0) { sign = "*"; } else { temp = Math.cos(Double.valueOf(str2)); area.setText(""); sign = "*"; } } else if (sign == "exp") { if (str2.length() == 0) { sign = "*"; } else { temp = Math.exp(Double.valueOf(str2)); area.setText(""); sign = "*"; } } else if (sign == "ln") { if (str2.length() == 0) { sign = "*"; } else { temp = Math.log(Double.valueOf(str2)); area.setText(""); sign = "*"; } } } else if (str == "/") { if (sign == " ") { sign = "/"; temp = Double.valueOf(str2); area.setText(""); } else if (sign == "-") { if (str2.length() == 0) { sign = "/"; } else { temp = temp - Double.valueOf(str2); sign = "/"; area.setText(""); key = true; } } else if (sign == "+") { if (str2.length() == 0) { sign = "/"; } else { temp = temp + Double.valueOf(str2); sign = "/"; area.setText(""); key = true; } } else if (sign == "*") { if (str2.length() == 0) { sign = "/"; } else { temp = temp * Double.valueOf(str2); sign = "/"; area.setText(""); key = true; } } else if (sign == "/") { if (str2.length() == 0) { sign = "/"; } else if (Double.valueOf(str2) == 0) { area.setText("除數不能為0哦!按 C"); } else { temp = temp / Double.valueOf(str2); area.setText(""); sign = "/"; key = true; } } else if (sign == "s") { if (str2.length() == 0) { sign = "/"; } else { temp = Math.sqrt(Double.valueOf(str2)); area.setText(""); sign = "/"; } } else if (sign == "sin") { if (str2.length() == 0) { sign = "/"; } else { temp = Math.sin(Double.valueOf(str2)); area.setText(""); sign = "/"; } } else if (sign == "cos") { if (str2.length() == 0) { sign = "/"; } else { temp = Math.cos(Double.valueOf(str2)); area.setText(""); sign = "/"; } } else if (sign == "exp") { if (str2.length() == 0) { sign = "/"; } else { temp = Math.exp(Double.valueOf(str2)); area.setText(""); sign = "/"; } } else if (sign == "ln") { if (str2.length() == 0) { sign = "/"; } else { temp = Math.log(Double.valueOf(str2)); area.setText(""); sign = "/"; } } } else if (str == "=") { if (sign == "+") { if (str2.length() == 0) { area.setText(String.valueOf(temp)); sign = " "; } else { temp = temp + Double.valueOf(str2); area.setText(String.valueOf(temp)); sign = " "; } } else if (sign == "-") { if (str2.length() == 0) { area.setText(String.valueOf(temp)); sign = " "; } else { temp = temp - Double.valueOf(str2); area.setText(String.valueOf(temp)); sign = " "; } } else if (sign == "*") { if (str2.length() == 0) { area.setText(String.valueOf(temp)); sign = " "; } else { temp = temp * Double.valueOf(str2); area.setText(String.valueOf(temp)); sign = " "; } } else if (sign == "/") { if (Double.valueOf(str2) == 0) { area.setText("除數不能為0哦!按C"); sign = " "; } else { temp = temp / Double.valueOf(str2); area.setText(String.valueOf(temp)); sign = " "; } } else if (sign == " ") { if (str2.length() == 0) { area.setText(String.valueOf(temp)); } else { temp = Double.valueOf(str2); area.setText(String.valueOf(temp)); } } else if (sign == "s") { temp = Math.sqrt(Double.valueOf(str2)); area.setText(String.valueOf(temp)); sign = " "; } else if (sign == "sin") { temp = Math.sin(Double.valueOf(str2)); area.setText(String.valueOf(temp)); sign = " "; } else if (sign == "cos") { temp = Math.cos(Double.valueOf(str2)); area.setText(String.valueOf(temp)); sign = " "; } else if (sign == "exp") { temp = Math.exp(Double.valueOf(str2)); area.setText(String.valueOf(temp)); sign = " "; } else if (sign == "ln") { temp = Math.log(Double.valueOf(str2)); area.setText(String.valueOf(temp)); sign = " "; } key = true; } } } }
以上就是關于“如何使用java代碼實現計算器”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。