Проверка случая коммутатора - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь проверить утверждение switch case, чтобы убедиться, что пользователь не вводит символы или строковые типы.Как мне этого добиться?Я пытался использовать оператор while, но не могу его проверить.

public static boolean showMenu()
{
    // Print welcome message
    System.out.println("\nApplication Menu : ");
    System.out.println("[1] Help");
    System.out.println("[2] Add");
    System.out.println("[3] Subtract");
    System.out.println("[4] Multiply");
    System.out.println("[5] Divide");
    System.out.println("[6] Quit");

    int SelectMenu = jin.nextInt();

    switch(SelectMenu)
    {

        case 1:
        showChoice();
        break;

        case 2:
        add();
        break;

        case 3:
        subtract();
        break;

        case 4:
        multiply();
        break;

        case 5:
        divide();
        break;

        case 6:
        return false;

    }
    return true;
}

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Посмотрите на этот простой пример и адаптируйте его под свой код:

/**
 *
 * @author Momir Sarac
 */
public class SwitchExample {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("\nApplication Menu : ");
        System.out.println("[1] Help");
        System.out.println("[2] Add");
        System.out.println("[3] Subtract");
        System.out.println("[4] Multiply");
        System.out.println("[5] Divide");
        System.out.println("[6] Quit");

        while (!scanner.hasNextInt()) scanner.next();
        int number = scanner.nextInt();
        switch (number) {
            case 1:
                clickedHelp();
                break;
            case 2:
                clickedAdd();
                break;
            case 3:
                clickedSubtract();
                break;
            case 4:
                clickedMultiply();
                break;
            case 5:
                clickedDivide();
                break;
            default:
                clickedSomething();

        }

    }

    public static void clickedHelp(){
        System.out.println("Help!");
    }


    public static void clickedAdd(){
        System.out.println("Add");
    }


    public static void clickedSubtract(){
        System.out.println("Subtract");
    }


    public static void clickedMultiply(){
        System.out.println("Multiply");
    }


    public static void clickedDivide(){
        System.out.println("Divide");
    }

    public static void clickedSomething(){
        System.out.println("Exit");
        System.exit(0);
    }

}
0 голосов
/ 03 марта 2019

Надеюсь, вам нужно сделать что-то вроде этого

public static boolean showMenu()
{


    while(true) {

        // Print welcome message
        System.out.println("\nApplication Menu : ");
        System.out.println("[1] Help");
        System.out.println("[2] Add");
        System.out.println("[3] Subtract");
        System.out.println("[4] Multiply");
        System.out.println("[5] Divide");
        System.out.println("[6] Quit");

        int SelectMenu = jin.nextInt();

        switch(SelectMenu)
        {

            case 1:
                showChoice();
                break;

            case 2:
                add();
                break;

            case 3:
                subtract();
                break;

            case 4:
                multiply();
                break;

            case 5:
                divide();
                break;

            case 6:
                return false;

        }

    }

}
0 голосов
/ 03 марта 2019

Вы можете использовать цикл следующим образом:

String line = jin.nextLine();
while(!line.matches("\\d")){
    System.out.println("Nope, please enter a digit");
    line = jin.nextLine();
}
int selectMenu  = Integer.parseInt(line);
...