0

I want to achieve this menu to keep looping to receive input when i enter the wrong input other than 1,2,3. How and where to put my while loop/ do while loop? I am new in JAVA.

After the user input other than 1,2 or 3 it should prompt the menu again. May i know how? Thanks.

How and where to put my while loop/ do while loop?

import java.util.*;
public class InputMenu 
{

public void display_menu() 
{

System.out.println("1) Option 1\n2) Option 2\n3) Option 3");
System.out.print("Selection: ");
}

public void question()
{
System.out.println("Would you like to proceed or quit?");
System.out.println("To proceed enter 9.");
System.out.println("If you wish to quit enter 0.");
Scanner q = new Scanner(System.in);

switch (q.nextInt()) 
{
    case 0:
    System.out.println ("Thank you and goodbye.");
    break;

    case 9:
    System.out.println ("Please proceed.");
    new InputMenu();
    break;
    default:
    System.err.println ( "Unrecognized option" );
        reenter();
    break;
}
}

public void reenter(){
    System.out.println ("Please re-enter option from 1 - 3 only.");
    display_menu();
}

public InputMenu() 
{
Scanner in = new Scanner(System.in);
    display_menu();


switch (in.nextInt()) 
{
    case 1:
    System.out.println ( "You picked option 1" );
    question();
    break;

    case 2:
    System.out.println ( "You picked option 2" );
    question();
    break;

    case 3:
    System.out.println ( "You picked option 3" );
    question();
    break;
    default:
    System.err.println ( "Unrecognized option" );
        reenter();
    break;
}
}

public static void main (String[]args) 
{
new InputMenu();
}
}
Syamil Fuad
  • 33
  • 1
  • 7
  • [Validating input using java.util.Scanner](https://stackoverflow.com/q/3059333) -> see example 1. – Pshemo Jan 06 '18 at 14:25

2 Answers2

0

Could be in your Constructor

public InputMenu() 
{
    Scanner in = new Scanner(System.in);
     display_menu();

    do{       //here
        int input = in.nextInt();
        switch (input) 
        {
            case 1:
            System.out.println ( "You picked option 1" );
            question();
            break;

            case 2:
            System.out.println ( "You picked option 2" );
            question();
            break;

            case 3:
            System.out.println ( "You picked option 3" );
            question();
            break;
            default:
            System.err.println ( "Unrecognized option" );
                reenter();
       }
    }
    while(input>3 || input <1); //here

}
Jorge L. Morla
  • 600
  • 4
  • 14
0

You can use the below code to input some integers specified by valid.

public static int read(String hint, Scanner scanner, Integer... valid) {
    System.out.print(hint);
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        try {
            int input = Integer.parseInt(line);
            if (Arrays.asList(valid).contains(input))
                return input;
        } catch (NumberFormatException e) {}
        System.out.print(hint);
    }
    return -1; // This is unreachable
}

Then you call

int selection = read("Selection: ", in, 1, 2, 3);
zhh
  • 1,901
  • 1
  • 7
  • 17