Оба ваших цикла while продолжаются до тех пор, пока choice != 8
. И поскольку вы никогда не измените choice
внутри цикла, он просто продолжит цикл (если пользователь не ввел 8
).
Также обратите внимание, что добавленный вами break;
- это разрывы для switch
, а не для остановки do-while
-петля. Для того, чтобы break
в корпусе коммутатора остановил весь do-while
-петл, вы должны использовать метку, чтобы дать циклу имя и разорвать его. Кроме того, вы должны попросить пользователя дать новый ввод, если он не вошел в один из переключателей, в противном случае он все равно будет зацикливаться вечно. Так что-то вроде этого:
choice = kboard.nextInt();
myLoop: do {
switch(choice) {
case 1:
f1.displayFloor();
break myLoop;
case 2:
f2.displayFloor();
break myLoop;
case 3:
f3.displayFloor();
break myLoop;
case 4:
f4.displayFloor();
break myLoop;
default: // Not one of the above
System.out.println(choice + " is an unknown choice. Please choose again.");
choice = kboard.nextInt(); // Ask the user for a new input
break; // <- This break only breaks the switch, not the loop
}
} while(choice !=8);
Если вы намеревались продолжать цикл до тех пор, пока пользователь не введет 8
, вместо этого должно быть что-то вроде этого:
choice = kboard.nextInt();
do {
switch(choice) {
case 1:
f1.displayFloor();
break;
case 2:
f2.displayFloor();
break;
case 3:
f3.displayFloor();
break;
case 4:
f4.displayFloor();
break;
default: // Not one of the above
System.out.println(choice + " is an unknown choice. Please choose again.");
}
choice = kboard.nextInt(); // Ask the user for a new input for the next iteration
} while(choice !=8);