GaryM
GaryM

Reputation: 11

Use switch case within while loop

I'm trying to code simple calculator (all in one) using Switch cases in java. I came up with following code so far. However I'm stuck with while loop. I want to keep showing main menu after each case execution until user decides to exit the program.

public static void main(String[] args) 
{   
    Scanner s=new Scanner(System.in);
    System.out.println("Main Menu:");
    System.out.println("1. Addition");
    System.out.println("2. Substraction");
    System.out.println("3. Multipication");
    System.out.println("4. Division");
    System.out.println("Enter your choice: ");
    int i=s.nextInt();

    System.out.println("ENTER FIRST NUMBER ");
    int a=s.nextInt();

    System.out.println("ENTER SECOND NUMBER ");
    int b=s.nextInt();

    int result=0;

    switch(i)
    {
        case 1:
            result=a+b;
            break;
        case 2:
            result=a-b;
            break;
        case 3:
            result=a*b;
            break;
        case 4:
            result=a/b;
            break;

        default:
            System.out.println("Wrong Choice.");

    }

    System.out.println("Answer is "+result);
    }
}

Above code works fine. Program ends itself after execution of user selected choice. I want to put main menu on a repeat.

Upvotes: 1

Views: 4752

Answers (3)

Blasanka
Blasanka

Reputation: 22477

There is more than one way to achieve this, you can use

  1. while loop.
  2. do-while loop.
  3. for loop.

I think do-while loop is better for your situation. Because either user wants to continue or not you have to proceed one time(before loop false). And you do not want to use another variable for quit the loop.

public static void main(String[] args) 
{   
    Scanner s=new Scanner(System.in);

    int result=0;

    do{
        System.out.println("Main Menu:");
        System.out.println("-1. complete and calculate");
        System.out.println("1. Addition");
        System.out.println("2. Substraction");
        System.out.println("3. Multipication");
        System.out.println("4. Division");
        System.out.println("Enter your choice: ");

        int i=s.nextInt();
        if(i ==-1){
            System.out.println("Answer is "+result);
            return;
        }
        System.out.println("ENTER FIRST NUMBER ");
        int a=s.nextInt();

        System.out.println("ENTER SECOND NUMBER ");
        int b=s.nextInt();


        switch(i)
        {
            case 1:
                result=a+b;
                break;
            case 2:
                result=a-b;
                break;
            case 3:
                result=a*b;
                break;
            case 4:
                result=a/b;
                break;
            default:
                System.out.println("Wrong Choice.");
                break;
        }
    }while(true);

}

Upvotes: 0

steven
steven

Reputation: 110

Add a while loop like this:

public static void main(String[] args) {

        // Moved this outside the while loop as davidxxx pointed out +1
        Scanner s = new Scanner(System.in);


        while (true) {
            System.out.println("Main Menu:");
            System.out.println("1. Addition");
            System.out.println("2. Substraction");
            System.out.println("3. Multipication");
            System.out.println("4. Division");
            System.out.println("Enter your choice: ");
            int i = s.nextInt();

            System.out.println("ENTER FIRST NUMBER ");
            int a = s.nextInt();

            System.out.println("ENTER SECOND NUMBER ");
            int b = s.nextInt();

            int result = 0;//'result' will store the result of operation

            switch (i) {
                case 1:
                    result = a + b;
                    break;
                case 2:
                    result = a - b;
                    break;
                case 3:
                    result = a * b;
                    break;
                case 4:
                    result = a / b;
                    break;

                default:
                    System.out.println("Wrong Choice.");

            }

            System.out.println("Answer is " + result);

            System.out.println("Go again?");
            String goAgain = s.next();
            if (!goAgain.equals("y")) {
               break;
            } 

        }
    }

Upvotes: 3

Sourav Gulati
Sourav Gulati

Reputation: 1359

Try this:

import java.util.Scanner;

public class Calculator {

    private static final String EXIT = "EXIT";

    public static void main(String[] args) {

        Calculator calc = new Calculator();
        Scanner s = new Scanner(System.in);
        while (true) {
            String res = calc.runCalc(s);
            if (res.equals(EXIT)) {
                break;
            } else {
                System.out.println(res);
            }
        }
    }

    private String runCalc(Scanner s) {
        System.out.println("Main Menu:");
        System.out.println("1. Addition");
        System.out.println("2. Substraction");
        System.out.println("3. Multipication");
        System.out.println("4. Division");
        System.out.println("5. Exit");
        System.out.println("Enter your choice: ");
        int i = s.nextInt();

        if (i == 5) {
            return EXIT;
        }

        System.out.println("ENTER FIRST NUMBER ");
        int a = s.nextInt();

        System.out.println("ENTER SECOND NUMBER ");
        int b = s.nextInt();

        int result = 0;// 'result' will store the result of operation

        switch (i) {
        case 1:
            result = a + b;
            break;
        case 2:
            result = a - b;
            break;
        case 3:
            result = a * b;
            break;
        case 4:
            result = a / b;
            break;

        default:
            return "Wrong Choice.";

        }

        return "Answer is " + result;
    }
}

Upvotes: 0

Related Questions