Advertisement
Kulas_Code20

calculator

Nov 19th, 2021
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.40 KB | None | 0 0
  1. package com.midtermexam;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.GridBagConstraints;
  5. import java.awt.GridBagLayout;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8.  
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JPanel;
  12. import javax.swing.JTextField;
  13.  
  14. public class Calcul implements ActionListener {
  15.    private static JTextField inputBox;
  16.  
  17.    Calcul(){}
  18.    public static void main(String[] args) {
  19.       createWindow();
  20.    }
  21.  
  22.    private static void createWindow() {          
  23.       JFrame frame = new JFrame("Calculator");
  24.       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  25.  
  26.       createUI(frame);
  27.       frame.setSize(200, 200);            
  28.       frame.setLocationRelativeTo(null);
  29.       frame.setVisible(true);
  30.    }
  31.  
  32.    private static void createUI(JFrame frame) {
  33.       JPanel panel = new JPanel();
  34.       Calcul calculator = new Calcul();
  35.       GridBagLayout layout = new GridBagLayout();          
  36.       GridBagConstraints gbc = new GridBagConstraints();
  37.       panel.setLayout(layout);
  38.        
  39.       inputBox = new JTextField(10);        
  40.       inputBox.setEditable(false);
  41.  
  42.       JButton button0 = new JButton("0");JButton button1 = new JButton("1");
  43.       JButton button2 = new JButton("2");JButton button3 = new JButton("3");
  44.       JButton button4 = new JButton("4");JButton button5 = new JButton("5");
  45.       JButton button6 = new JButton("6");JButton button7 = new JButton("7");
  46.       JButton button8 = new JButton("8");JButton button9 = new JButton("9");
  47.  
  48.       JButton buttonPlus = new JButton("+");JButton buttonMinus = new JButton("-");
  49.       JButton buttonDivide = new JButton("/");JButton buttonMultiply = new JButton("x");
  50.       JButton buttonClear = new JButton("C");JButton buttonDot = new JButton(".");
  51.       JButton buttonEquals = new JButton("=");
  52.  
  53.       button1.addActionListener(calculator);button2.addActionListener(calculator);
  54.       button3.addActionListener(calculator);button4.addActionListener(calculator);
  55.       button5.addActionListener(calculator);button6.addActionListener(calculator);
  56.       button7.addActionListener(calculator);button8.addActionListener(calculator);
  57.       button9.addActionListener(calculator);button0.addActionListener(calculator);
  58.  
  59.       buttonPlus.addActionListener(calculator);buttonMinus.addActionListener(calculator);
  60.       buttonDivide.addActionListener(calculator);buttonMultiply.addActionListener(calculator);
  61.       buttonClear.addActionListener(calculator);buttonDot.addActionListener(calculator);
  62.       buttonEquals.addActionListener(calculator);
  63.  
  64.       gbc.fill = GridBagConstraints.HORIZONTAL;
  65.       gbc.gridx = 0; gbc.gridy = 0; panel.add(button1, gbc);        
  66.       gbc.gridx = 1; gbc.gridy = 0; panel.add(button2, gbc);
  67.       gbc.gridx = 2; gbc.gridy = 0; panel.add(button3, gbc);
  68.       gbc.gridx = 3; gbc.gridy = 0; panel.add(buttonPlus, gbc);
  69.       gbc.gridx = 0; gbc.gridy = 1; panel.add(button4, gbc);
  70.       gbc.gridx = 1; gbc.gridy = 1; panel.add(button5, gbc);
  71.       gbc.gridx = 2; gbc.gridy = 1; panel.add(button6, gbc);
  72.       gbc.gridx = 3; gbc.gridy = 1; panel.add(buttonMinus, gbc);
  73.       gbc.gridx = 0; gbc.gridy = 2; panel.add(button7, gbc);
  74.       gbc.gridx = 1; gbc.gridy = 2; panel.add(button8, gbc);
  75.       gbc.gridx = 2; gbc.gridy = 2; panel.add(button9, gbc);
  76.       gbc.gridx = 3; gbc.gridy = 2; panel.add(buttonDivide, gbc);
  77.       gbc.gridx = 0; gbc.gridy = 3; panel.add(buttonDot, gbc);
  78.       gbc.gridx = 1; gbc.gridy = 3; panel.add(button0, gbc);
  79.       gbc.gridx = 2; gbc.gridy = 3; panel.add(buttonClear, gbc);
  80.       gbc.gridx = 3; gbc.gridy = 3; panel.add(buttonMultiply, gbc);
  81.       gbc.gridwidth = 3;
  82.  
  83.       gbc.gridx = 0; gbc.gridy = 4; panel.add(inputBox, gbc);        
  84.       gbc.gridx = 3; gbc.gridy = 4; panel.add(buttonEquals, gbc);
  85.       frame.getContentPane().add(panel, BorderLayout.CENTER);        
  86.    }
  87.  
  88.    public void actionPerformed(ActionEvent e) {
  89.       String command = e.getActionCommand();
  90.       if (command.charAt(0) == 'C') {                      
  91.          inputBox.setText("");
  92.       }else if (command.charAt(0) == '=') {                    
  93.          inputBox.setText(evaluate(inputBox.getText()));
  94.       }else {                                
  95.          inputBox.setText(inputBox.getText() + command);
  96.       }
  97.    }
  98.  
  99.    public static String evaluate(String expression) {
  100.       char[] arr = expression.toCharArray();
  101.       String operand1 = "";String operand2 = "";String operator = "";
  102.       double result = 0;
  103.  
  104.       for (int i = 0; i < arr.length; i++) {
  105.          if (arr[i] >= '0' && arr[i] <= '9' || arr[i] == '.') {
  106.             if(operator.isEmpty()){
  107.                operand1 += arr[i];
  108.             }else{
  109.                operand2 += arr[i];
  110.             }
  111.          }  
  112.  
  113.          if(arr[i] == '+' || arr[i] == '-' || arr[i] == '/' || arr[i] == '*') {
  114.             operator += arr[i];
  115.          }
  116.       }
  117.  
  118.       if (operator.equals("+"))
  119.          result = (Double.parseDouble(operand1) + Double.parseDouble(operand2));
  120.       else if (operator.equals("-"))
  121.          result = (Double.parseDouble(operand1) - Double.parseDouble(operand2));
  122.       else if (operator.equals("/"))
  123.          result = (Double.parseDouble(operand1) / Double.parseDouble(operand2));
  124.       else
  125.          result = (Double.parseDouble(operand1) * Double.parseDouble(operand2));          
  126.       return operand1 + operator + operand2 + "=" +result;
  127.    }    
  128. }
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement