Help!编了一个计算器的程序,却出了一点问题。


     import java.awt.*;
     import javax.swing.*;
     import java.awt.event.*;
 
     public class Calculator{
        public static void main(String args[]){
     
          CalculatorFrame frame = new CalculatorFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.show();
        }
     }

     /**
 A frame a calculator panel.
     */
 
     class CalculatorFrame extends JFrame{
   
        public CalculatorFrame(){
     
          setTitle("Calcultor");
          setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
          CalculatorPanel panel = new CalculatorPanel();
          Container contentPane = getContentPane();
          contentPane.add(panel);
        }
   
        public static  int DEFAULT_WIDTH = 300;
        public static  int DEFAULT_HEIGHT =200;

     }

     /**
 A panel with calculator buttons and a result display.
     */
     class CalculatorPanel extends JPanel{

 public CalculatorPanel(){

    setLayout(new BorderLayout());

    result = 0;
    lastCommand = "=";
    start = true;

    // add the idsplay

    display = new JLabel("0");
      add(display,BorderLayout.NORTH);

    ActionListener insert = new InsertAction();
    ActionListener command = new CommandAction();

    // add the buttons in a 4 * 4 grid

    panel = new JPanel();
    panel.setLayout(new GridLayout(4,4));

    addButton("7",insert);
    addButton("8",insert);
    addButton("9",insert);
    addButton("/",command);

    addButton("4",insert);
    addButton("5",insert);
    addButton("6",insert);
    addButton("*",command);

    addButton("1",insert);
    addButton("2",insert);
    addButton("3",insert);
    addButton("-",command);

    addButton("0",insert);
    addButton(".",insert);
    addButton("=",insert);
    addButton("+",command);

    add(panel,BorderLayout.CENTER);
 }

        /**
    Adds button to the center panel.
    @param label the button label
    @param listener the button listener
  */

  private void addButton(String label,ActionListener listener){

    JButton button = new JButton(label);
    button.addActionListener(listener);
    panel.add(button);
 }

 /**
    This action inserts the button action string to the
    end of the display text.
 */

 private class InsertAction implements ActionListener{

    public void actionPerformed(ActionEvent event){

       String input = event.getActionCommand();
       if(start){
  
   display.setText("");
   start = false;
       }
       display.setText(display.getText() + input);
    }
  }

 /**
    This action executes the command that the butoon
    action string denotes.
 */

 private class CommandAction implements ActionListener{

    public void actionPerformed(ActionEvent event){

       String command = event.getActionCommand();

       if(start){

  if(command.equals("-")){

     display.setText(command);
     start = false;
  }
  else
       lastCommand = command;
       }
       else{
    
     calculate(Double.parseDouble(display.getText()));
     lastCommand = command;
     start = true;
       }
    }
 }

 /**
    Carries out the pending calculation.
    @param x the value to be accumulated with the prior result.
 */
 public void calculate(double x){
 
    if(lastCommand.equals("+"))  result += x;
    else if(lastCommand.equals("-"))  result -= x;
    else if(lastCommand.equals("*"))  result *= x;
           else if(lastCommand.equals("/"))  result /= x;
    else if(lastCommand.equals("="))  result = x;
    display.setText("" + result);
 }

  private JLabel display;
 private JPanel panel;
 private double result;
 private String lastCommand ;
 private boolean start;
    }
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值