How to Create A Basic Calculator In Java Applet In Advanced Way

    1
    20
    Spread the love
    • 1
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
      1
      Share

    Objective of this Approach:

    In my last post I have shown How to Create A Basic Calculator In Java Applet.
    That was too basic. The objective was to gain more knowledge on..

    • how to add buttons
    • how to add controls
    • how to work with action listener

    In this post we are going in but advanced way..


    For creating a calculator, we need to define the requirement first.. These requirements will keep on adding whenever required. We will be cleared about how prototype model works.
    So will create a prototype first and keep implementing the calculator.

    Basic Requirements:

    The requirements are ..

    • There will be buttons with number 1 to 9
    • There will be simple arithmetic operation button like-‘+’,’-‘,’*’ and ‘/’
    • There will an equal(‘=’) button
    • The resultant will be displayed in a text box.

    How to Code:


     How to Create A Basic Calculator In Java Applet Here I have told the basics. Now in this post I will show how to code in a compact manner.
    For adding button 0 to 9.

    for(int i=0;i<10;i++  )
    {
    button[i]=new Button(""+i);
    //Naming of the button
    add(button[i]);
    //Adding the buttons
    button[i].addActionListener(this);
    //adding action listeners to those buttons
    } 

    Now on the action performed section-

    //This section is bit tricky here we are finding from which button 
    //we are getting the request
    String output=event.getActionCommand();
    char firstCharacter= output.charAt(0);
    if(Character.isDigit(firstCharacter))
    text1.setText(text1.getText()+ output);
    //if the incoming character is digit we need to append 
    //with the existing digits 
       if(output.equals("+ "))
       {
       m=Integer.parseInt(text1.getText());
       //taking the number provided as first number
       key1="add";
       //Setting the key based on that later we will 
       //perform operations
       text1.setText("");
       //Performing clean up activity
       }
       else if(output.equals("-"))
       {
       m=Integer.parseInt(text1.getText());
       key1="min";
       text1.setText("");
       }
       else if(output.equals("*"))
       {
        m=Integer.parseInt(text1.getText());
       key1="mul";
       text1.setText("");
       }
       else if(output.equals("/"))
       {
       m=Integer.parseInt(text1.getText());
       key1="div";
       text1.setText("");
       }
       else if(output.equals("C"))
       {
       //This is for clearing the screen.
       text1.setText("");
       }
     

    The working process of equals button.

    • It will take the second number
    • based on the key1  value it will determine the operation
    • It should also check the divide rule..the second number should not be zero.It should print error if second number is zero.
    • Later it should setup the resultant error.
    if(output.equals("="))
    {
      n=Integer.parseInt(text1.getText());
      //Getting the second number
      if(key1=="add")
      {
      //if key is add then add operation will be performed 
      //on first number and second number
      res=m+n;
      }
      if(key1=="min")
      {
                    res=m-n;
      }
      if(key1=="mul")
      {
      res=m*n;
      }
      if(key1=="div")
      {
      //Checking if the second number is 0 
      //or not to avoid divided by zero error
       if(n!=0)
        res=m/n;
       else
       //if second number is zero then it will print error
       res1="Error";
      }
        if(res1.equals(""))
        //Setting up the result
        text1.setText("" +res);
        else
        text1.setText("" +res1);
    }
    } 
    How real implementation will take place?:

    Let me write the complete code here..

    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    public class calculator_updated extends Applet implements ActionListener
    {
    //Initialize the text field
    TextField text1;
    //Create array of buttons
    Button button[]=new Button[10];
    //Create the buttons for special programs
    Button add,sub,mul,div,equalto,clr;
    String key1="",res1="";
    int m=0,res=0,n=0;
    public void init()
    {
    text1=new TextField(20);
    //craete a layout
    GridLayout layout=new GridLayout(4,5);
    setLayout(layout);
    add(text1);
    //adding the textfield
    for(int i=0;i<10;i++  )
    {
    button[i]=new Button("" +i);
    //Naming of the button
    add(button[i]);
    //Adding the buttons
    button[i].addActionListener(this);
    //adding action listeners to those buttons
    }
    add=new Button("+" " + ");
    sub=new Button("+" "-");
    mul=new Button("+" "*");
    div=new Button("+" "/");
    equalto=new Button("+" "=");
    clr=new Button("+" "C");
    //Adding the special buttons and adding action listeners to it
    add(add);
    add.addActionListener(this);
    add(sub);
    sub.addActionListener(this);
    add(mul);
    mul.addActionListener(this);
    add(div);
    div.addActionListener(this);
    add(equalto);
    equalto.addActionListener(this);
    add(clr);
    clr.addActionListener(this);
    
    }
    public void actionPerformed(ActionEvent event)
    {
    //This section is bit tricky here we are finding from which button 
    //we are getting the request
    String output=event.getActionCommand();
    char firstCharacter= output.charAt(0);
    if(Character.isDigit(firstCharacter))
    text1.setText(text1.getText() +output);
    //if the incoming character is digit we need to append 
    //with the existing digits 
       if(output.equals("+ "))
       {
       m=Integer.parseInt(text1.getText());
       //taking the number provided as first number
       key1="add";
       //Setting the key based on that later we will 
       //perform operations
       text1.setText("");
       //Performing clean up activity
       }
       else if(output.equals("-"))
       {
       m=Integer.parseInt(text1.getText());
       key1="min";
       text1.setText("");
       }
       else if(output.equals("*"))
       {
        m=Integer.parseInt(text1.getText());
       key1="mul";
       text1.setText("");
       }
       else if(output.equals("/"))
       {
       m=Integer.parseInt(text1.getText());
       key1="div";
       text1.setText("");
       }
       else if(output.equals("C"))
       {
       //This is for clearing the screen.
       text1.setText("");
       }
    
    
    if(output.equals("="))
    {
      n=Integer.parseInt(text1.getText());
      //Getting the second number
      if(key1=="add")
      {
      //if key is add then add operation will be performed 
      //on first number and second number
      res=m+n;
      }
      if(key1=="min")
      {
                    res=m-n;
      }
      if(key1=="mul")
      {
      res=m*n;
      }
      if(key1=="div")
      {
      //Checking if the second number is 0 
      //or not to avoid divided by zero error
       if(n!=0)
        res=m/n;
       else
       //if second number is zero then it will print error
       res1="Error";
      }
        if(res1.equals(""))
        //Setting up the result
        text1.setText("" +res);
        else
        text1.setText("" +res1);
    }
    }
    }

    How to Call this from HTML?


    Well I have already explained this in my last post.Hence not going that much deep.
    The HTML code will look like-

    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <div >
    <applet width=300 height=300 code="calculator_updated.class"> </applet>
    </APPLET>
    </div>
    </BODY>
    </HTML> 
    Output??

    I tried to perform 2+3 by clicking on the 2 , then 3 and lastly =
    I have got 5.

    Don't miss out!
    Subscribe To Newsletter

    Receive top technical news, lesson ideas, travel tips and more!

    Invalid email address
    Give it a try. You can unsubscribe at any time.

    Spread the love
    • 1
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
      1
      Share

    1 COMMENT

    LEAVE A REPLY

    Please enter your comment!
    Please enter your name here