Цикл внутри операторов switch - PullRequest
0 голосов
/ 23 сентября 2018

Мне интересно, каким был бы наиболее эффективный метод зацикливания внутри оператора switch.Ниже у меня есть переменная userInput, и я хотел бы получить предложения, если бы здесь был лучше реализован оператор if / then, чтобы продолжить выбор моего меню, пока не будет введено -1 для выхода из моей программы, или если цикл do / while будет более уместным.

import java.util.Scanner;

public class VirtualZoo
{
public static void main(String[] args) 
{
// Options
final int catType = 0,
          dogType = 1,
          duckType = 2,
          exit = -1;

// create Scanner
Scanner input;
input = new Scanner(System.in);
    int userInput;
                System.out.println("Welcome to the Zoo");
                System.out.println("Pick select an animal to visit");
    System.out.println("=================================");
    System.out.println("===========MAIN MENU=============");
    System.out.println("=================================");
    System.out.println("==  " + catType + ") Cat    ===================");
    System.out.println("==  " + dogType + ") Dog    ===================");
    System.out.println("==  " + duckType + ") Duck   ===================");
    System.out.println("== " + exit + ") EXIT   ===================");
    System.out.println("=================================");
    System.out.println();
    System.out.println();
    System.out.println( "Input  : ");
    Scanner sc = new Scanner(System.in);
    userInput = sc.nextInt();

Animal animalSelected = null;

switch (userInput) 
{
    case 0:
        animalSelected = new Cat();
        break;
    case 1:
        animalSelected = new Dog();
        break;
    case 2:
        animalSelected = new Duck();
        break;
    case -1:
        System.out.println("\n" + "Thank you for visiting the Virtual Zoo" + "\n" + "Goodbye!");
        break;
    default:
        break;
}

if (animalSelected != null)
 {
    System.out.println(animalSelected);
 }
}
}

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

В этом случае лучше всего использовать цикл do-while.Я напишу ваш код с циклом do-while, пожалуйста, дайте мне знать, если это то, что вы хотите:

import java.util.Scanner;

public class VirtualZoo {

    public static void main(String[] args) {
// Options
        final int catType = 0,
                dogType = 1,
                duckType = 2,
                exit = -1;

// create Scanner
        Scanner input;
        input = new Scanner(System.in);
        int userInput;
        System.out.println("Welcome to the Zoo");
        System.out.println("Pick select an animal to visit");
        System.out.println("=================================");
        System.out.println("===========MAIN MENU=============");
        System.out.println("=================================");
        System.out.println("==  " + catType + ") Cat    ===================");
        System.out.println("==  " + dogType + ") Dog    ===================");
        System.out.println("==  " + duckType + ") Duck   ===================");
        System.out.println("== " + exit + ") EXIT   ===================");
        System.out.println("=================================");
        do {
            System.out.println();
            System.out.println();
            System.out.println("Input  : ");
            Scanner sc = new Scanner(System.in);
            userInput = sc.nextInt();

            Animal animalSelected = null;

            switch (userInput) {
                case 0:
                    animalSelected = new Cat();
                    break;
                case 1:
                    animalSelected = new Dog();
                    break;
                case 2:
                    animalSelected = new Duck();
                    break;
                case -1:
                    System.out.println("\n" + "Thank you for visiting the Virtual Zoo" + "\n" + "Goodbye!");
                    break;
                default:
                    break;
            }

            if (animalSelected != null) {
                System.out.println(animalSelected);
            }
        } while (userInput != -1);
    }
}
0 голосов
/ 24 сентября 2018

В этом случае лучше использовать цикл do-while, поскольку вы хотите, чтобы он выполнялся более одного раза.Оператор if / else не решит вашу проблему так просто

0 голосов
/ 23 сентября 2018

Подойдет цикл do while, поскольку вы всегда хотите запускать коммутатор хотя бы один раз.

...