L oop, который генерирует случайные числа и печатает, когда условие выполняется - PullRequest
0 голосов
/ 22 февраля 2020

У меня проблема с генерацией al oop, которая даст мне случайные числа, которые будут соответствовать моему условию.

Пример:

Создайте два числа в границах (401) +100 и напечатайте числа, когда int a будет больше b

Программа должна работать, пока условие не будет выполнено. Я думал, что я должен использовать "while" l oop, но это не очень хорошо. Спасибо за ответ.

 import java.util.Random;

    public class Ex7 {
        public static void main(String[] args) {

        Random rand = new Random();
        int a = rand.nextInt(401) + 100;
        int b = rand.nextInt(401) + 100;
        while (a > b) {
            System.out.println("B value: " + b);
        }

    }

    }

Ответы [ 3 ]

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

Это бесконечный l oop, который останавливается, когда условие выполняется, это то, что вы ищете?

Random rand = new Random();
int a,b;
while(true)
{
    a = rand.nextInt(401) + 100;
    b = rand.nextInt(401) + 100;
    if(a>b) {
        System.out.println("B value: " + b);
        break;
    }
}

РЕДАКТИРОВАТЬ: Если вы не хотите, чтобы это прекратилось, то просто удалить break

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

Программа должна работать, пока условие не будет выполнено. Я думал, что я должен использовать «while» l oop, но не очень хорошо

В вашем текущем коде случайные значения для a и b были сгенерированы только один раз и делают не обновляться. Следовательно, если a окажется больше b, вы получите бесконечное l oop с бесконечными выходными данными. Если a окажется меньше, чем b, вы вообще не получите никакого вывода.

Вам нужно повторно рандомизировать значение a и b после каждого раунда looping.

Преимущество использования while-loop заключается в том, что необходимо убедиться, что условие l oop оценивается как true (т. е. a больше b) для кодов в l oop, который будет выполнен.

Чтобы преодолеть это, вы можете использовать do-while-loop, чтобы не беспокоиться о начальных значениях для a и b:

public class Ex7 {
    public static void main(String[] args) {

        Random rand = new Random();
        int a = 0;
        int b = 0;
        do{                             //run first                
            a = rand.nextInt(401) + 100;
            b = rand.nextInt(401) + 100;
            System.out.println("B value: " + b);
        }while (a > b);                 //then check condition whether to continue running
    }
}
0 голосов
/ 22 февраля 2020

Поскольку после того, как вы в первый раз вводите «Пока L oop», вы не переназначали новое значение a и b, поэтому, если a больше, чем b в первый раз, оно будет печататься всегда, а если b больше, чем в первый раз, он никогда ничего не печатает. Быстро исправить это - переназначить значение снова через while-l oop после печати!

    while (a > b) {
        System.out.println("B value: " + b);
        a = rand.nextInt(401) + 100;
        b = rand.nextInt(401) + 100;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...