#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:
- Используйте
default
дляUnkown option
. Узнайте больше об этом из руководства, инструкции switch - Правильно поместите меню внутри
do-while
цикла. Вы пропустилиdo
в своем коде. - Вы ошибочно поставили
;
после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);
Он будет работать правильно.