Где я ошибаюсь в этом меню

#java #eclipse #loops #if-statement #switch-statement

#java #eclipse #циклы #if-оператор #switch-statement

Вопрос:

Я создал код для системы меню для моего счетчика монет, я пытаюсь сделать так, чтобы пользователь мог выбирать более одного варианта после того, как они выбрали первый, пока они не решат завершить программу. Он не зацикливается, и код запускает только один вариант, после чего мне приходится перезапускать код вручную с помощью запуска в eclipse. Кто-нибудь может дать мне некоторое представление о том, что я здесь пропустил, спасибо 🙂

 Scanner ss=new Scanner(System.in);
int Choice;
int opt;
    System.out.println("***Coin Sorter - Main Menu***");
    System.out.println("    1 - Coin Calculator");
    System.out.println("    2 - Multiple coin calculator");
    System.out.println("    3 - Print Coin list");
    System.out.println("    4 - Set details");
    System.out.println("    5 - Display program configurations");
    System.out.println("    6 - Quit the program");
    Choice=ss.nextInt();
    switch(Choice) {
        case 1: coinCalculator();
                break;
        case 2: multiCoinCalculator();
                break;
        case 3: printCoinList();
                break;
        case 4: System.out.println("***Set Details Sub-Menu***");
                System.out.println("1 - Set currency");
                System.out.println("2 - Set minimum coin input value");
                System.out.println("3 - Set maximum coin input value");
                System.out.println("4 - Return to main menu");
                opt=ss.nextInt();
                if (opt==1) {
                setCurrency(Currency);
                }else if (opt==2) {
                    setMinCoinin(opt);
                }else if (opt==3) {
                    setMaxCoinin(opt);
                }else if (opt==4);
                    CoinSorter();
                break;
        case 5: displayProgramConfigs();
                break;
        case 6: if(Choice != 6) System.out.println("Unkown option");    
    } while (Choice !=6);
  

Комментарии:

1. Попробуйте обернуть свой код в цикл выполнения во время выполнения и добавить опцию выхода.

Ответ №1:

  1. Используйте default для Unkown option . Узнайте больше об этом из руководства, инструкции switch
  2. Правильно поместите меню внутри do-while цикла. Вы пропустили do в своем коде.
  3. Вы ошибочно поставили ; после else if (opt==4)

И последнее, но не менее важное: всегда следуйте соглашениям об именовании Java, например. имя переменной может быть choice , но не должно быть Choice .

ДЕМОНСТРАЦИЯ:

 import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner ss = new Scanner(System.in);
        int choice;
        int opt;
        do {
            System.out.println("***Coin Sorter - Main Menu***");
            System.out.println("    1 - Coin Calculator");
            System.out.println("    2 - Multiple coin calculator");
            System.out.println("    3 - Print Coin list");
            System.out.println("    4 - Set details");
            System.out.println("    5 - Display program configurations");
            System.out.println("    6 - Quit the program");
            choice = ss.nextInt();
            switch (choice) {
            case 1:
                coinCalculator();
                break;
            case 2:
                multiCoinCalculator();
                break;
            case 3:
                printCoinList();
                break;
            case 4:
                System.out.println("***Set Details Sub-Menu***");
                System.out.println("1 - Set currency");
                System.out.println("2 - Set minimum coin input value");
                System.out.println("3 - Set maximum coin input value");
                System.out.println("4 - Return to main menu");
                opt = ss.nextInt();
                if (opt == 1) {
                    setCurrency(Currency);
                } else if (opt == 2) {
                    setMinCoinin(opt);
                } else if (opt == 3) {
                    setMaxCoinin(opt);
                } else if (opt == 4) {
                    CoinSorter();
                }
                break;
            case 5:
                displayProgramConfigs();
                break;
            case 6:
                System.out.println("Good Bye!");
                break;
            default:
                System.out.println("Unkown option");
            }
        } while (choice != 6);
    }
}
  

Ответ №2:

Ваш цикл while выполняется бесконечно, вы должны использовать do-while для решения проблемы.

 Scanner ss=new Scanner(System.in);
int Choice;
int opt;
do {
    System.out.println("***Coin Sorter - Main Menu***");
    System.out.println("    1 - Coin Calculator");
    System.out.println("    2 - Multiple coin calculator");
    System.out.println("    3 - Print Coin list");
    System.out.println("    4 - Set details");
    System.out.println("    5 - Display program configurations");
    System.out.println("    6 - Quit the program");
    Choice=ss.nextInt();
    switch(Choice) {
        case 1: coinCalculator();
                break;
        case 2: multiCoinCalculator();
                break;
        case 3: printCoinList();
                break;
        case 4: System.out.println("***Set Details Sub-Menu***");
                System.out.println("1 - Set currency");
                System.out.println("2 - Set minimum coin input value");
                System.out.println("3 - Set maximum coin input value");
                System.out.println("4 - Return to main menu");
                opt=ss.nextInt();
                if (opt==1) {
                    setCurrency(Currency);
                }else if (opt==2) {
                    setMinCoinin(opt);
                }else if (opt==3) {
                    setMaxCoinin(opt);
                }else if (opt==4);
                    CoinSorter();
                break;
        case 5: displayProgramConfigs();
                break;
        case 6: if(Choice != 6) System.out.println("Unkown option");    
    } 

} while (Choice !=6);
  

Он будет работать правильно.