calculator.java~5~
来自「教材管理系统」· JAVA~5~ 代码 · 共 207 行
JAVA~5~
207 行
package bookmanager;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator{public static void main(String[] args){CalculatorFrame frame=new CalculatorFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}class CalculatorFrame extends JFrame{public CalculatorFrame(){setTitle("Calculator");CalculatorPanel panel=new CalculatorPanel();add(panel);pack();}}class CalculatorPanel extends Panel{public CalculatorPanel(){setLayout(new BorderLayout());result=0;lastCommand="=";start=true;flag=true;display=new JButton("0");display.setEnabled(false);add(display,BorderLayout.NORTH);ActionListener insert=new InsertAction();ActionListener command=new CommandAction();panel=new JPanel();panel.setLayout(new GridLayout(4,5));addButton("7",insert);addButton("8",insert);addButton("9",insert);addButton("/",command);addButton("CE",command);addButton("4",insert);addButton("5",insert);addButton("6",insert);addButton("*",command);addButton("Backspace",command);addButton("1",insert);addButton("2",insert);addButton("3",insert);addButton("-",command);addButton("sqrt",command);addButton("0",insert);addButton(".",insert);addButton("=",command);addButton("+",command);addButton("1/x",command);add(panel,BorderLayout.CENTER);}private void addButton(String label,ActionListener listener){JButton button=new JButton(label);button.addActionListener(listener);panel.add(button);}private class InsertAction implements ActionListener{public void actionPerformed(ActionEvent event){String input=event.getActionCommand();if(start&&flag){display.setText("");start=false;}if(flag)display.setText(display.getText()+input);}}private class CommandAction implements ActionListener{public void actionPerformed(ActionEvent event){String command=event.getActionCommand();if(command.equals("CE")){display.setText("0");start=true;flag=true;command="=";}elseif(start&&flag){if(command.equals("-")){display.setText(command);start=false;}elseif((command.equals("1/x")||command.equals("sqrt"))&&flag)calculate(Double.parseDouble(display.getText()),command);elseif(flag)lastCommand=command;}else{if(command.equals("Backspace")&&flag){String s=display.getText();char[] s1=s.toCharArray();if(s.length()>=2){String s2=new String(s1,0,s.length()-1);display.setText(s2);}else{display.setText("0");start=true;}}else if(flag){calculate(Double.parseDouble(display.getText()),command);lastCommand=command;start=true;}}}}public void calculate(double x,String command){if(lastCommand.equals("+")) result+=x;else if(lastCommand.equals("-")) result-=x;else if(lastCommand.equals("/")){if(x!=0)result/=x;else{display.setText("除数不能为0");start=false;flag=false;return;}}else if(lastCommand.equals("*")) result*=x;else if(command.equals("1/x")){if(x!=0)result=1/x;else{display.setText("除数不能为0");start=false;flag=false;return;}}else if(command.equals("sqrt")){if(x>=0)result=Math.sqrt(x);else{display.setText("函数输入无效");start=false;flag=false;return;}}else if(lastCommand.equals("=")) result=x;display.setText(""+result);}private JButton display;private JPanel panel;private double result;private String lastCommand;private boolean start;private boolean flag;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?