public class Test {
public static void main(String[] args) {
WhileTest whileTest = new WhileTest();
whileTest.menu();
System.out.println("Just finished menu function");
}
}
class WhileTest {
public void menu() {
boolean finish = false;
while (!finish) {
// print menu
int n = 0; // acquire selection through other method of the program
switch (n) {
case 0:
finish = true;
System.out.println(0);
break;
case 1:
// do stuff 1
System.out.println(1);
break;
case 2:
// do stuff 2
System.out.println(2);
break;
case 3:
// do stuff 3
System.out.println(3);
break;
case 4:
// do stuff 4
System.out.println(4);
break;
}
System.out.println("After the switch block");
}
}
}
Обратите внимание, что вы не задали никаких условий по умолчанию в операторе switch. И если вы не дадите оператор по умолчанию в блоке переключателя, код будет совершенно корректным. Однако выполнение программы начинается после кадра переключения.
Запишите следующий сценарий:
Сценарий 1: Когда вы дадите n = 0. Вывод будет следующее:
0
After the switch block
Just finished menu function
В первый раз он переходит к блоку переключателей и устанавливает переменную fini sh в значение true. Таким образом, выполнение будет происходить только один раз.
Сценарий 2: когда вы дадите n = 1, или 2, или 3, или 4. Вывод будет следующим:
4
After the switch block
4
After the switch block
4
After the switch block
Это будет бесконечный поток из двух вышеуказанных двух строк. Переменная fini sh никогда не становится истинной. Вам придется вручную остановить программу.
Сценарий 3: , когда вы даете n = 5 или что-то, чего нет в блоке case. Вывод будет следующим:
After the switch block
After the switch block
After the switch block
After the switch block
After the switch block
After the switch block
Это будет бесконечный поток вышеуказанных строк. Поскольку он не собирается ни в один из блоков case, ни переменная fini sh нигде не изменяется.