Заявление «Если» не будет напечатано в цикле - PullRequest
0 голосов
/ 08 января 2020

Мой код работает, есть только одна проблема. Код предназначен для печати чисел между двумя пользовательскими вводами. Эта часть кода работает, однако, если первое число больше второго, оно не должно печататься и запрашивать снова. Все до этого момента работает, однако, если первое число больше второго, консоль и код просто заканчиваются, и я не могу понять, почему? Ребята, вы можете помочь и объяснить, что я делаю не так? Спасибо! Вот мой код:

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);

    int higherNum, lowerNum;

    System.out.print("First: ");
    lowerNum=Integer.parseInt(reader.nextLine());

    System.out.print("Second: ");
    higherNum=Integer.parseInt(reader.nextLine());

    while (higherNum>=lowerNum){
        if (lowerNum>higherNum){
            System.out.print("Sorry, you put your first number higher than your second, please make your first number a smaller number than your second. "); // this does not print 
        }
    }

    System.out.println(lowerNum++);
}

Ответы [ 5 ]

0 голосов
/ 08 января 2020

ya будет напечатано внутри для l oop для подтверждения просто go по следующей ссылке

https://www.sanfoundry.com/java-program-check-given-number-perfect-number/

0 голосов
/ 08 января 2020

Вы можете ввести числовые значения методом перезапуска процесса. Рекурсивный вариант будет полезен для этой проблемы.

publi c void TakeNumbers () {Scanner reader = new Scanner (System.in);

int higherNum, lowerNum;

System.out.print("First: ");
lowerNum=Integer.parseInt(reader.nextLine());

System.out.print("Second: ");
higherNum=Integer.parseInt(reader.nextLine());

 if (lowerNum>higherNum){
        System.out.print("Sorry, you put your first number higher than your second, please make your first number a smaller number than your second. ");

TakeNumbers();

System.out.println(lowerNum++);

}

publi c stati c void main (String [] args) {

TakeNumbers();

}

0 голосов
/ 08 января 2020

Я бы посоветовал вам сначала использовать условие if:

if (lowerNum>higherNum){
    System.out.print("Sorry, you put your first number higher than your second, please make your first number a smaller number than your second. ");
} else{
    while (higherNum>=lowerNum){
        System.out.println(lowerNum++);
    }
}

Это происходит потому, что если lowerNum больше, чем higherNum, то ваше условие while приведет к false и не будет печататься ничего, так как сообщение об ошибке находится внутри while l oop.

0 голосов
/ 08 января 2020

Ваш, если должно быть до того времени. Я исправил некоторые другие вещи по пути.

public static void main(String[] args) {

    Scanner reader = new Scanner(System.in);
    int higherNum = 0, lowerNum = 1;

    while(lowerNum>=higherNum){

        System.out.print("First: ");
        lowerNum=Integer.parseInt(reader.nextLine());

        System.out.print("Second: ");
        higherNum=Integer.parseInt(reader.nextLine());

        if(lowerNum>=higherNum){

            System.out.println("Sorry, you put your first number higher than your second, please make your first number a smaller number than your second. ");

        } else {

            while(lowerNum<higherNum-1){
                System.out.println(++lowerNum);
            }

        }
    }
}
0 голосов
/ 08 января 2020

Ваш l oop запускается только в том случае, если HigherNum> = lowerNum, что означает, что ваше условие if внутри l oop никогда не будет истинным.

Чтобы достичь результата, вы должны сделать следующее:

while (lowerNum>higherNum ){
            System.out.print("Sorry, you put your first number higher than your second,   please make your first number a smaller number than your second. "); // this does not print

            System.out.print("First: ");
            lowerNum=Integer.parseInt(reader.nextLine());

            System.out.print("Second: ");
            higherNum=Integer.parseInt(reader.nextLine());

        }

        while(lowerNum <= higherNum) {
            System.out.println(lowerNum++);
        }
...