计算器代码

 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="=";
  }
  else
  if(start&&flag)
  {
  if(command.equals("-"))
  {
  display.setText(command);
  start=false;
  }
  else
  if((command.equals("1/x")||command.equals("sqrt"))&&flag)
  calculate(Double.parseDouble(display.getText()),command);
  else
  if(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;

  

 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值