ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel
  • »
  • Technology»
  • Computers & Software»
  • Computer Science & Programming»
  • Programming Languages

Simple Program for using JOptionpane Choices and Basic Calculator Java Source Code

Updated on June 19, 2013

Sample Java Program on Basic Calculator Using JOptionpane

Using JOptionPane in Java Programming means you will use dialog boxes while the program is running. JOptionPane is a pre-defined method that is from the pre-defined JOptionPane class. You can generate 5 types of messages in JOptionpane namely, Information Message, Warning Message, Question Message, Plain Message and Error Message. JOptionpane also provides many options that programmer can choose to display on the dialog box like the yes and no option, OK option and Cancel Option.

What is this Basic Calculator that uses JOptionPane?

The sample of basic calculator that will be given below used 'stringTokenizer', parsing and error handling, the user can perform the 4 arithmetic operation on the dialog box and the program will return the answer. The scope of this program is just that. You are free to modify the program according to what you need and improve it. The program below will just show you how to use 'JOptionPane' and perform basic arithmetic operations using other pre-defined functions. No more than that. Enjoy! And happy programming!

Java Source Code for Basic Calculator using JOptionPane

//main class

package joptionpane;

import java.util.InputMismatchException;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args)
    {
        int ans = 0;
        boolean success = false;
       do
       {
        try
        {
            String str = JOptionPane.showInputDialog(null, "Enter numbers plus their operators", "String Calculator", JOptionPane.QUESTION_MESSAGE);

            jOptionPaneClass access = new jOptionPaneClass();

            access.getResult(str);
            if(JOptionPane.QUESTION_MESSAGE == JOptionPane.CANCEL_OPTION)
            {
                break;
            }
                
            ans = JOptionPane.showConfirmDialog(null,"Want to try again?",
                "Basic Calculator", JOptionPane.);

            success = true;
        }catch(InputMismatchException e){
             JOptionPane.showMessageDialog(null,e.getMessage(), "EXCEPTION" , JOptionPane.WARNING_MESSAGE);
         }catch(NumberFormatException e){
             JOptionPane.showMessageDialog(null,e.getMessage(), "EXCEPTION" , JOptionPane.WARNING_MESSAGE);
         }catch(ArithmeticException e){
             JOptionPane.showMessageDialog(null,e.getMessage(), "EXCEPTION" , JOptionPane.WARNING_MESSAGE);
         }catch(ArrayIndexOutOfBoundsException e){
            JOptionPane.showMessageDialog(null,e.getMessage(), "EXCEPTION" , JOptionPane.WARNING_MESSAGE);
         }catch(Exception e){
            JOptionPane.showMessageDialog(null,e.getMessage(), "EXCEPTION" , JOptionPane.WARNING_MESSAGE);

           }
       }while(ans == JOptionPane.YES_OPTION);
      
    }
}

//java Class



package joptionpane;

import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class jOptionPaneClass
{
    public void stringCalcAdd(String str)
    {
          int num1;
          int num2;


        StringTokenizer token = new StringTokenizer(str, " + ");

        while(token.hasMoreTokens())
        {


            num1 = Integer.parseInt(token.nextToken());
            num2 = Integer.parseInt(token.nextToken());
            int sum = num1+num2;
            int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

            if(ans==JOptionPane.YES_OPTION)
            {
                JOptionPane.showMessageDialog(null, "The result is: " + sum, "Result", JOptionPane.INFORMATION_MESSAGE);
            }
         }
    }

    public void stringCalcSubtract(String str)
    {

        int num1;
        int num2;


        StringTokenizer token = new StringTokenizer(str, " - ");

        while(token.hasMoreTokens())
        {


            num1 = Integer.parseInt(token.nextToken());
            num2 = Integer.parseInt(token.nextToken());
            int difference = num1-num2;
             int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

            if(ans==JOptionPane.YES_OPTION)
            {
                JOptionPane.showMessageDialog(null, "The result is: " + difference, "Result", JOptionPane.INFORMATION_MESSAGE);
            }
         }
    }

    public void stringCalcMultiply(String str)
    {

        int num1;
        int num2;


        StringTokenizer token = new StringTokenizer(str, " * ");

        while(token.hasMoreTokens())
        {


            num1 = Integer.parseInt(token.nextToken());
            num2 = Integer.parseInt(token.nextToken());
            int product = num1*num2;
             int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

            if(ans==JOptionPane.YES_OPTION)
            {
                JOptionPane.showMessageDialog(null, "The result is: " + product, "Result", JOptionPane.INFORMATION_MESSAGE);
            }
         }
    }

    public void stringCalcDivide(String str)
    {

        double num1;
        double num2;


        StringTokenizer token = new StringTokenizer(str, " / ");

        while(token.hasMoreTokens())
        {


            num1 = Integer.parseInt(token.nextToken());
            num2 = Integer.parseInt(token.nextToken());
            if(num2 > 0)
            {
            double qoutient = num1/num2;
             int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

            if(ans==JOptionPane.YES_OPTION)
            {
                JOptionPane.showMessageDialog(null, "The result is: " + qoutient, "Result", JOptionPane.INFORMATION_MESSAGE);
            }
            }
            if(num2 == 0 && num1 == 0)
            {
               String Un = "Undefined";
                int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

                if(ans==JOptionPane.YES_OPTION)
                {
                    JOptionPane.showMessageDialog(null, "The result is: " + Un, "Result", JOptionPane.INFORMATION_MESSAGE);
                }
            }
         }

    }
    public void stringCalcPower(String str)
    {
        double base;
        double power;


        StringTokenizer token = new StringTokenizer(str, " ^ ");

        while(token.hasMoreTokens())
        {


            base = Integer.parseInt(token.nextToken());
            power = Integer.parseInt(token.nextToken());
            if(power == 0)
            {
             int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

                if(ans==JOptionPane.YES_OPTION)
                {
                    JOptionPane.showMessageDialog(null, "The result is: " + 0, "Result", JOptionPane.INFORMATION_MESSAGE);
                }
            }
            else if(power == 1)
            {
               int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

                if(ans==JOptionPane.YES_OPTION)
                {
                    JOptionPane.showMessageDialog(null, "The result is: " + base, "Result", JOptionPane.INFORMATION_MESSAGE);
                }
            }
            else if(power > 1)
            {
                double pow = Math.pow(base, power);
                int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

                if(ans==JOptionPane.YES_OPTION)
                {
                    JOptionPane.showMessageDialog(null, "The result is: " + pow, "Result", JOptionPane.INFORMATION_MESSAGE);
                }
            }
            else if(power < 1)
            {
                double pow =1 / Math.pow(base, power * -1) ;
                 int ans = JOptionPane.showConfirmDialog(null,"Proceed?",
                "Basic Calculator", JOptionPane.YES_NO_CANCEL_OPTION);

                if(ans==JOptionPane.YES_OPTION)
                {
                    JOptionPane.showMessageDialog(null, "The result is: " + pow, "Result", JOptionPane.INFORMATION_MESSAGE);
                } 
            }
         }
    }
    public void getResult(String str)
    {
        for(int i=0;i<10;i++)
      {
          if(str.charAt(i) == '+')
          {
              stringCalcAdd(str);
              break;
          }
          if(str.charAt(i) == '-')
          {
              stringCalcSubtract(str);
              break;
          }
          if(str.charAt(i) == '*')
          {
              stringCalcMultiply(str);
              break;
          }
          if(str.charAt(i) == '/')
          {
              stringCalcDivide(str);
              break;
          }
          if(str.charAt(i) == '^')
          {
              stringCalcPower(str);
              break;
          }   
    }
    }
}

Sample Output:

Do you find this hub useful to you? Please rate it or leave a comment. Happy Programming!

Comments

    0 of 8192 characters used
    Post Comment

    No comments yet.