calculator Java

package calculator;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;

final public class calculator {
    //process the question utility question
    private  calculator(){}
    //change magic number
    public static final int NUMBER_OF_FOUR = 1 ;
    //set default parameter
    static private double leftOperand = NUMBER_OF_FOUR;
    static private double rightOperand = 1;
    static private double result = 0;
    //set text for displaying result
    static class OperatorListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String op = ((JButton)e.getSource()).getText();
            resultLabel.setText("");
            operatorLabel.setText(op);
        }
    }
    //write listener function
    static class EqualListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            leftOperand = Double.parseDouble(leftLabel.getText());
            rightOperand= Double.parseDouble(rightLabel.getText());
            String op = operatorLabel.getText();
            //use equals instead of "=="
            try {
                if (op.equals("+")) {
                    result = leftOperand + (rightOperand);
                } else if (op.equals("-")) {
                    result = leftOperand - (rightOperand);
                } else if (op.equals("*")) {
                    result = leftOperand * (rightOperand);
                } else if (op.equals("/")) {
                	//if(rightOperand!=0)
                		result = leftOperand / (rightOperand);
                }             	
            }catch(ArithmeticException ex) {
            	System.out.println("Exception thrown  :" + ex);
            }

            //convert number to  text
            resultLabel.setText(Double.toString(result));
        }
    }
    //change magic number
    public static final int NUMBER_OF_ONE = 5 ;
    public static final int NUMBER_OF_TWO = 400 ;
    public static final int NUMBER_OF_THREE = 200 ; 
    //set the  first line swing
    static private JTextField leftLabel = new JTextField(Double.toString(leftOperand));
    static private JLabel operatorLabel = new JLabel("");
    static private JTextField rightLabel = new JTextField(Double.toString(rightOperand));
    static private JLabel equalLabel = new JLabel("=");
    static private JLabel resultLabel = new JLabel("");

    static public void main(String[] args) {
        String[] ops = {"+", "-", "*", "/"};
        JFrame frame = new JFrame("Calculator");
        frame.setVisible(true);
        frame.setSize(NUMBER_OF_TWO, NUMBER_OF_THREE);
        frame.setLayout(new GridLayout(0, NUMBER_OF_ONE));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //add swing
        frame.add(leftLabel);
        frame.add(operatorLabel);
        frame.add(rightLabel);
        frame.add(equalLabel);
        frame.add(resultLabel);
        //complete layout
        leftLabel.setHorizontalAlignment(SwingConstants.CENTER);
        rightLabel.setHorizontalAlignment(SwingConstants.CENTER);
        operatorLabel.setHorizontalAlignment(SwingConstants.CENTER);
        equalLabel.setHorizontalAlignment(SwingConstants.CENTER);
        resultLabel.setHorizontalAlignment(SwingConstants.CENTER);
        leftLabel.setBorder(BorderFactory.createLineBorder(Color.gray));
        rightLabel.setBorder(BorderFactory.createLineBorder(Color.gray));
        operatorLabel.setBorder(BorderFactory.createLineBorder(Color.gray));
        equalLabel.setBorder(BorderFactory.createLineBorder(Color.gray));
        resultLabel.setBorder(BorderFactory.createLineBorder(Color.gray));
        //add listener
        for (String str: ops) {
            JButton btn = new JButton(str);
            btn.addActionListener(new OperatorListener());
            frame.add(btn);
        }
        //print result
        JButton eq = new JButton("OK");
        eq.addActionListener(new EqualListener());
        frame.add(eq);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值