Как получить введенный пользователем номер для выхода из цикла?
Я пытаюсь заставить пользователя вводить любое число от 0 до 10 неограниченное количество раз, пока он не захочет остановиться. Они останавливаются, вводя значение -1. До сих пор я был в состоянии создать то, что происходит, когда они вводят правильное значение, но когда они вводят -1 (что является недопустимым значением в цикле while), программа знает, что это неверно. Все, что я ищу, - это чтобы программа исключала -1 для возможного неверного ввода, и чтобы программа перестала запрашивать больше ввода. Вот мой код до сих пор:
int userInput=0;
System.out.println("Please enter numbers ranging from 0 to 10 (all inclusive).");
System.out.println("When you want to stop, type and enter -1.");
while (userInput <= 10 && userInput >= 0)
{
userInput=Integer.parseInt(br.readLine());
while (userInput > 10|| userInput < 0)
{
System.out.println("That number is not in between 0 and 10. Please enter a correct number.");
userInput=Integer.parseInt(br.readLine());
}
sum=sum+userInput;
freq++;
}
while (userInput == -1)
{
System.out.println("You have chosen to stop inputing numbers.");
}
Извините за мое ограниченное понимание:/
1 ответ
Я бы посоветовал вам делать слишком много с циклами while. Как написано, ты никогда не выберешься из своего первого. Если вы введете число от 0 до 10, он вернется и запросит снова. Если вы добавляете что-то кроме этого, вы нажимаете этот вложенный цикл while, и в итоге вы снова запрашиваете номер. Подумайте о потоке и о том, что вы хотите, чтобы он делал. Вот краткий план того, как это сделать:
System.out.println("Please enter numbers ranging from 0 to 10 (all inclusive).");
System.out.println("When you want to stop, type and enter -1.");
keepgoing = true;
while(keepgoing) {
userInput=Integer.parseInt(br.readLine());
if((userInput <= 10 && userInput >= 0) {
sum=sum+userInput;
freq++;
}
else if(userInput == -1) {
System.out.println("You have chosen to stop inputing numbers.");
keepgoing = false;
}
else {
System.out.println("That number is not in between 0 and 10. Please enter a correct number.");
}
}
По крайней мере, я думаю, что это там. Существуют различные методы для контроля потока вашего кода. Хорошо знать, когда использовать какой.