как заставить ваш цикл отображать «стоп» в конце, когда случайное число меньше 100 - PullRequest
0 голосов
/ 12 октября 2019

я генерирую случайное число, которое, если оно больше 100, цикл продолжается, а если оно меньше 100, цикл останавливается

Random rand = new Random();
int r = rand.nextInt(200) ;

if(r < 100 );{
    System.out.println( r + " stop");
    while(r > 100);{
        r = rand.nextInt(200);
        System.out.println( r +"continue");
   }    
}

Я ожидаю, что программа завершится при слове "останов«потому что это меньше, чем 100

Ответы [ 4 ]

2 голосов
/ 12 октября 2019

Имея логику в цикле, вы можете легко завершить ее, когда условие будет выполнено. Вам нужно только назначить и проверить r один раз, и минимум один раз, следовательно, цикл do-while - ваша лучшая ставка.

Random rand = new Random();
int r ;
do{
    r = rand.nextInt(200);
    if(r < 100 ){
        break;
    }
    System.out.println( r +"continue");
}while(true);
System.out.println( r + " stop");

Вы также можете использовать цикл for! Это назначит r на первой итерации и проверит его, затем итерирует, если условие не выполнено, затем снова назначит r и проверит его снова.

Random rand = new Random();
int r ;
for(r = rand.nextInt(200); r >= 100; r = rand.nextInt(200)){
    System.out.println( r +"continue");
}
System.out.println( r + " stop");
1 голос
/ 12 октября 2019

Вам не нужно 2 условия;while «неправильно» => попробуйте еще раз:

SecureRandom rand = new SecureRandom();
int r = rand.nextInt(200) ;

while(r < 100) {
    System.out.println(r + "continue");
    r = rand.nextInt(200);
}

System.out.println(r + " stop");

Если вам нужен только результат, вы можете использовать генератор:

final SecureRandom rand = new SecureRandom();
final IntSupplier gen = () -> rand.nextInt(200);

final int r = IntStream.generate(gen) // note: streams are lazy
        .filter(i -> i >= 100)
        .findAny()
        .orElse(0);

System.out.println(r);
0 голосов
/ 12 октября 2019

Если значение r, установленное во второй строке, меньше ста, вы увидите распечатку «стоп», и цикл while никогда не будет введен - это не даст никакого эффекта

Если во второй строке задано значение, большее или равное сотне, вы вообще не будете вводить этот блок if, а также не будете вводить блок while.

Обратите внимание, что некоторые из них были пропущенызакрывающие скобки, которые я добавил.

Я также игнорирую точку с запятой после while, что, как я полагаю, является опечаткой, удалите ее.

0 голосов
/ 12 октября 2019

Поместите условие if внутри цикла while и используйте оператор перехода, такой как break, чтобы завершить итерацию цикла, как только он встретит значение не меньше 100.

Вы помещаете ';'после цикла while, поэтому содержимое цикла не будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...