Как получить число, введенное пользователем, для выхода из цикла?

Я пытаюсь заставить пользователя вводить любое число от 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.");
    }

Извините за мое ограниченное понимание :/


person r2d2    schedule 07.11.2015    source источник


Ответы (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.");
    }
}

По крайней мере, я думаю, что это происходит там. Существуют различные методы управления потоком вашего кода. Хорошо знать, когда какой из них использовать.

person emd    schedule 07.11.2015