'while' бесконечно l oop с использованием входных данных сканера и положительных / отрицательных чисел - PullRequest
3 голосов
/ 12 февраля 2020

Я не могу понять, как использовать некоторое время l oop, чтобы определить, является ли число положительным или нет. В то время как (I> 0), если я положу любое положительное число, оно всегда будет иметь значение выше 0, что означает бесконечное l oop.

int i = 0;

System.out.println("#1\n Input Validation\n Positive values only"); // #1 Input Validation
System.out.print(" Please enter a value: ");

Scanner scan = new Scanner(System.in);
i = scan.nextInt();

while (i > 0)
{
    System.out.println("The value is: " +i);
} 

System.out.println("Sorry. Only positive values.");

Кроме того, когда я вводю отрицательное число, оно не ' t go вернуться к сканеру для возможного ввода положительного числа.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Вы можете go к такому подходу:

    int i = 0;

    System.out.println("#1\n Input Validation\n Positive values only"); // #1 Input Validation

    Scanner scan = new Scanner(System.in);

    while (i >= 0) {
        System.out.print(" Please enter a value: ");
        i = scan.nextInt();
        if (i > 0) {
            System.out.println("The value is: " + i);
        } else {
            break;
        }
    }

    System.out.println("Sorry. Only positive values.");
0 голосов
/ 12 февраля 2020

Я считаю, что это то, чего вы пытаетесь достичь.

    int i = 0; // int is 0

    while (i <= 0) {
        // int is 0 or a negative number
        System.out.println("#1\n Input Validation\n Positive values only");
        System.out.print(" Please enter a value: ");
        Scanner scan = new Scanner(System.in);
        i = scan.nextInt();

        if (i > 0) {
            System.out.println("The value is: " + i);
        } else {
            System.out.println("Sorry. Only positive values.");
        }
        // if number is positive then continue to termination. If negative then repeat loop
    }

Обратите более пристальное внимание на то, куда вы помещаете свое, в то время как l oop, поскольку ваше первоначальное размещение, безусловно, приведет к бесконечному l * 1007. *

while (i > 0)
{
    System.out.println("The value is: " +i);
    // number is positive - repeat loop containing only this line of code to infinity
}
// number is either 0 or negative so continue to termination
...