Question

In: Computer Science

Please use Java language in an easy way with comments! Thanks! Create a calculator that uses...

Please use Java language in an easy way with comments! Thanks!

Create a calculator that uses an array of buttons for numbers from 0-9, the . for decimals, and for operators +, -, * ,/ and = as well as a JTextfield that displays the current value or the result. Use ActionListeners and LayoutManagers appropriately.

The example below shows how to determine which button has been clicked.

ActionListener actionListener = new ActionListener()
 {
     public void actionPerformed(ActionEvent actionEvent) 
     {
        System.out.println(actionEvent.getActionCommand());
     }
 };

Solutions

Expert Solution

CODE IN JAVA:

Calculator.java file:

// Java program to create a simple calculator
// with basic +, -, /, * using java swing elements

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class Calculator extends JFrame implements ActionListener {

   // creating a textfield
   static JTextField l;

   // storing oprerator and operands
   String s0, s1, s2;

   // default constrcutor
   Calculator()
   {
       s0 = s1 = s2 = "";
   }

   // main method
   public static void main(String args[])
   {
       // creating a frame
       JFrame f = new JFrame("calculator");


       // creating a object of class
       Calculator c = new Calculator();

       // creating a textfield
       l = new JTextField(16);

       // setting the textfield to non editable
       l.setEditable(false);

       // creating number buttons and some operators
       JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, ba, bs, bd, bm, be, beq, beq1;

       // creating number buttons
       b0 = new JButton("0");
       b1 = new JButton("1");
       b2 = new JButton("2");
       b3 = new JButton("3");
       b4 = new JButton("4");
       b5 = new JButton("5");
       b6 = new JButton("6");
       b7 = new JButton("7");
       b8 = new JButton("8");
       b9 = new JButton("9");

       // creating equals button
       beq1 = new JButton("=");

       // creating operator buttons
       ba = new JButton("+");
       bs = new JButton("-");
       bd = new JButton("/");
       bm = new JButton("*");
       beq = new JButton("C");

       // creating . button
       be = new JButton(".");

       // create a panel
       JPanel p = new JPanel();

       // adding action listeners
       bm.addActionListener(c);
       bd.addActionListener(c);
       bs.addActionListener(c);
       ba.addActionListener(c);
       b9.addActionListener(c);
       b8.addActionListener(c);
       b7.addActionListener(c);
       b6.addActionListener(c);
       b5.addActionListener(c);
       b4.addActionListener(c);
       b3.addActionListener(c);
       b2.addActionListener(c);
       b1.addActionListener(c);
       b0.addActionListener(c);
       be.addActionListener(c);
       beq.addActionListener(c);
       beq1.addActionListener(c);

       // adding elements to panel
       p.add(l);
       p.add(ba);
       p.add(b1);
       p.add(b2);
       p.add(b3);
       p.add(bs);
       p.add(b4);
       p.add(b5);
       p.add(b6);
       p.add(bm);
       p.add(b7);
       p.add(b8);
       p.add(b9);
       p.add(bd);
       p.add(be);
       p.add(b0);
       p.add(beq);
       p.add(beq1);


       // add panel to frame
       f.add(p);

       f.setSize(200, 220);
       f.show();
   }
   public void actionPerformed(ActionEvent e)
   {
       String str = e.getActionCommand();

       // if the value is a number
       if ((str.charAt(0) >= '0' && str.charAt(0) <= '9') || str.charAt(0) == '.') {
           // if operand is present then add to second no
           if (!s1.equals(""))
               s2 = s2 + str;
           else
               s0 = s0 + str;

           // set the value of text
           l.setText(s0 + s1 + s2);
       }
       else if (str.charAt(0) == 'C') {
           // clear the one letter
           s0 = s1 = s2 = "";

           // set the value of text
           l.setText(s0 + s1 + s2);
       }
       else if (str.charAt(0) == '=') {

           double te;

           // store the value in 1st
           if (s1.equals("+"))
               te = (Double.parseDouble(s0) + Double.parseDouble(s2));
           else if (s1.equals("-"))
               te = (Double.parseDouble(s0) - Double.parseDouble(s2));
           else if (s1.equals("/"))
               te = (Double.parseDouble(s0) / Double.parseDouble(s2));
           else
               te = (Double.parseDouble(s0) * Double.parseDouble(s2));

           // set the value of text
           l.setText(s0 + s1 + s2 + "=" + te);

           // convert it to string
           s0 = Double.toString(te);

           s1 = s2 = "";
       }
       else {
           // if there was no operand
           if (s1.equals("") || s2.equals(""))
               s1 = str;
           // else evaluate
           else {
               double te;

               // store the value in 1st
               if (s1.equals("+"))
                   te = (Double.parseDouble(s0) + Double.parseDouble(s2));
               else if (s1.equals("-"))
                   te = (Double.parseDouble(s0) - Double.parseDouble(s2));
               else if (s1.equals("/"))
                   te = (Double.parseDouble(s0) / Double.parseDouble(s2));
               else
                   te = (Double.parseDouble(s0) * Double.parseDouble(s2));

               // convert it to string
               s0 = Double.toString(te);

               // place the operator
               s1 = str;

               // make the operand blank
               s2 = "";
           }

           // set the value of text
           l.setText(s0 + s1 + s2);
       }
   }
}

OUTPUT:


Related Solutions

Please use java language in an easy way and comment as much as you can! Thanks...
Please use java language in an easy way and comment as much as you can! Thanks 1. A driver class with a main method, which creates instances of various objects (two of each subclass) and adds them as items to an ArrayList named "inventory". A foreach loop should loop through the ArrayList and call the use() method of each item. Define the ArrayList in a way that it only holds elements of the GameItem class and its subclasses. Make proper...
Please use java language in an easy way and comment as much as you can! Thanks...
Please use java language in an easy way and comment as much as you can! Thanks (Write a code question) Write a generic method called "findMin" that takes an array of Comparable objects as a parameter. (Use proper syntax, so that no type checking warnings are generated by the compiler.) The method should search the array and return the index of the smallest value. (Analysis of Algorithms question) Determine the growth function and time complexity (in Big-Oh notation) of the...
Please use java language in an easy way and comment as much as you can! Thanks...
Please use java language in an easy way and comment as much as you can! Thanks (Write a code question) Write a generic method called "findMin" that takes an array of String objects as a parameter. (Use proper syntax, so that no type checking warnings are generated by the compiler.) The method should search the array and return the index of the smallest value.
Please use java language in an easy way with comments! Expand your below program, so it...
Please use java language in an easy way with comments! Expand your below program, so it can include cursed items (weapons that break, armor that causes more damage when worn). In order to do that, write an interface called "CursedItem". Then create subclasses of the armor, and weapon class that implement the CursedItem interface : CursedWeapon: using a random number generator, there is a 4 in 10 chance that the weapon breaks during combat. CursedArmor: this item amplifies the damage...
Please use Java language with comments! Thanks! Write a program that will display multiple dots move...
Please use Java language with comments! Thanks! Write a program that will display multiple dots move across the Frame and randomly change direction when they hit the edge of the screen. Do this by creating a Dot class and making each dot an object of that class. You may reuse code written in class for this part of the assignment. Create a subclass of the Dot class called PlayerDot that is controlled by the player through keyboard input (arrow keys)...
How to identify when to use super() in constructor for java language in a easy way?
How to identify when to use super() in constructor for java language in a easy way?
Please use Java language! with as much as comment! thanks! Write a program that displays a...
Please use Java language! with as much as comment! thanks! Write a program that displays a frame with a three labels and three textfields. The labels should be "width:", "height:", and "title:" and should each be followed by one textfield. The texfields should be initialized with default values (Example 400, 600, default title), but should be edited by the user. There should be a button (label it whatever you want, I don't care). If you click the button, a new...
Please use Java language! with as much as comment! thanks! Write a program that displays a...
Please use Java language! with as much as comment! thanks! Write a program that displays a frame with a three labels and three textfields. The labels should be "width:", "height:", and "title:" and should each be followed by one textfield. The texfields should be initialized with default values (Example 400, 600, default title), but should be edited by the user. There should be a button (label it whatever you want, I don't care). If you click the button, a new...
create scientific calculator using java language with OOP rule and interfaces.
create scientific calculator using java language with OOP rule and interfaces.
Calculator in Assembly Language (Please add comments to explain your steps) Description: You are responsible to...
Calculator in Assembly Language (Please add comments to explain your steps) Description: You are responsible to implement several assembly functions to perform the simple arithmetic calculations for 2 64-bit integers. These functions will use the C function signature but the main logic within this function should be inline assembly code using the ASM block similar to the assembly example shown in class. Program Specification: 1. long mult ( long op1, long op2 ) - Can’t use the MUL/IMUL instructions, meaning...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT