Как я могу перебирать случайные числа и останавливаться на определенном числе? Javascript

#javascript #node.js

#javascript #node.js

Вопрос:

Я хочу регистрировать случайные числа на консоли до 6 включительно.

 
let i = 0

function test() {
    while (i < 6) {
        i = Math.floor(Math.random() * 7)
        console.log(i)
    }
    if (i = 6){
        console.log(i);
        break;
    }
}

  

Я пробовал это, но получаю сообщение об ошибке «Недопустимый оператор прерывания»

Что такое недопустимый оператор break и как я могу этого добиться?

Комментарии:

1. вы используете break вне своего цикла…

2. Сравнение выполняется с помощью ===

Ответ №1:

Комментарии:

1. вы также можете использовать === для проверки типа

Ответ №2:

превратите оператор if в тест на равенство, содержащийся в операторе while, т.е.

 while(i<6){...   
if(i==6)
     {...
     } 
}
  

Вот полное решение, примечание 6 печатается дважды, кстати, при выполнении конечного условия.

 let i = 0;

function test() {
    while (i < 6) {
        i = Math.floor(Math.random() * 7);
        console.log(i);

        if (i == 6){
            console.log(i);
            break;
        }
    }

}
test();
  

Ответ №3:

Вам не нужно использовать оператор break . Потому что, когда i = 6 тогда ваше условие цикла ложно. Цикл выполняется только тогда, когда i < 6 .

 let i = 0

function test() {
    while (i < 6) {
        i = Math.floor(Math.random() * 7)
        console.log(i)
    }
     if (i == 6){
        console.log(i);
     }
}
  

Ответ №4:

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

И из-за этого вам не нужно ни break цикла, ни return функции.

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

Ответ №5:

  • i = 6 (назначение) должно заключаться i === 6 в проверке строгого равенства
  • Вместо использования break вы могли бы просто использовать рекурсию, которая будет вызывать ту же функцию, если random r не равен n

 function test(max, n) {
   const r = ~~(Math.random() * (max   1));
   console.log(r);
   if (r !== n) test(max, n);
}

test(6, 6); // max 6, stop if 6  

Ответ №6:

Вы используете оператор break внутри функции, а не внутри цикла, поэтому у вас возникает проблема. Переместите ваше условие и оператор break внутри цикла while.

Исправить:

    let i = 0
    
    function test() {
        while (i < 6) {
            i = Math.floor(Math.random() * 7)
            console.log(i)
            if (i == 6){
               console.log(i);
               break;
            }
        }
    
    }
  

Ответ №7:

Выдает ошибку для остановки выполнения

 if (i === 3) {
            throw new Error(); // break
        }