В то время как L oop, где я console.log фраза является целым числом между 10-0? - PullRequest
1 голос
/ 23 января 2020

Я пытаюсь создать функцию, в которой я console.log фраза, когда число находится в диапазоне от 0 до 10.

Я получаю ее, чтобы распечатать фразу 10 раз, но чтобы получить ее чтобы пройти тестовую платформу, мне нужно распечатать ее, когда число равно 0, и оно не проходит.

function doWhileLoop(num) {
  var i = 0;

  function incrementVariable() {
    i++
    return i;
  }
  do {
    console.log(i, "I run once regardless.");
  }
  while (incrementVariable() <= 9);
}

doWhileLoop(10);

Ответы [ 2 ]

1 голос
/ 23 января 2020

Обратите внимание, мне неясно, хотите ли вы, чтобы он печатался 10 раз, либо 0 или 10 не могут быть включены. Если вы хотите напечатать 0 .. 10, это на самом деле будет 11 раз. Поэтому отрегулируйте приведенные ниже примеры соответствующим образом.

Обратите внимание, что при устранении неполадок полезно напечатать значение i, как я это делал в приведенных ниже примерах. Когда программа работает должным образом, вы можете удалить i из вашего console.log до того, как вы окончательно отправите ее.

Я также распечатываю окончательное значение i при выходе из l oop .
Это хорошая точка сравнения для понимания того, как циклы и приращение значений работают в каждом случае. Также полезно знать, как эти циклы оставляют переменные, к которым можно обращаться позже в программе, и служат для сравнения с напечатанными значениями.

В первых двух примерах не используется отдельная функция только для приращения, поскольку само приращение является функцией и встроено в язык. В нем также показано, как два варианта, которые язык предоставляет для инкремента, могут использоваться полезными способами для управления условиями конечной точки, такими как это.

Во всех случаях я последовательно использовал i < num, поэтому сравнения удерживайте.
В зависимости от ваших требований это также может быть i < num+1 (эквивалент i <= num) или i < num-1. Регулировка этого значения увеличит или уменьшит последнее / наибольшее значение i, которое печатается (и значение i имеет после окончания l oop).

++i печатает 10 раз: когда i равно 0 .. 9.
i === 10, когда l oop заканчивается.
(использование i <= num приведет к печати 0 .. 10 и выход со значением 11)

function doWhileLoop(num) {
  let i = 0;

  do {
    console.log(i, "I run once regardless. ");
  }
  while (++i < num);

  console.log("Final value of i:", i);
}

doWhileLoop(10);

Для сравнения, эта версия
i++ печатает 11 раз: когда i равно 0 .. 10.
i === 11, когда l oop заканчивается.
(использование i < num+1 выдаст 0 .. 9 и завершится со значением 10)

function doWhileLoop(num) {
  let i = 0;

  do {
    console.log(i, "I run once regardless. ");
  }
  while (i++ < num);

  console.log("Final value of i:", i);
}

doWhileLoop(10);

Разница между ++i и i++ заключается в том, что:
++i приращения i сначала , затем используются новые значение, определяющее, следует ли снова запускать l oop или нет.
i++ определяет, следует ли сначала запускать l oop сначала, на основании значения, которое i уже имеет (и напечатало), затем после этого он увеличивается i, но перед тем, как снова запустить l oop (или до его выхода, если l oop больше не будет запускаться).


В вашем коде incrementVariable() действует точно так же, как my ++i, как в примере выше, потому что вызов функции incrementVariable() выполняется до выполняется сравнение while.


Другим решением будет использование if - then для ограничения вашего оператора печати. ​​
Эта версия печатает 10 раз: когда i равно 0 .. 9.
i === 10, когда l oop выходит.
(В этом сценарии вы можете контролировать конечное значение l oop, а количество раз, которое запускается l oop, независимо от напечатанных значений.)

function doWhileLoop(num) {

  var i = 0;
  function incrementVariable() {
    i++
    return i;
  }
  
  do {
    if (i < num) {
      console.log(i, "I run once regardless.");
    }
  }
  while (incrementVariable() < num);

  console.log("Final value of i:", i);
}

doWhileLoop(10);
1 голос
/ 23 января 2020

Печать только тогда, когда incrementVariable() меньше полученной переменной:

function doWhileLoop(num)  {
   var i = 0; 

  function incrementVariable() {
    i++
    return i;
  }
  do {
    console.log("I run once regardless.");
   }
  while(incrementVariable() <= num);
 }

Дело в том, что условие l oop должно содержать параметр, передаваемый в функцию doWhileLoop (while(incrementVariable() <= num)). И я предполагаю, что упражнение пытается показать вам, что код внутри блока do всегда будет запускаться хотя бы один раз, даже если условие в while ложно. Таким образом, следующий код запускается один раз:

do {
    console.log("I run once regardless.");
   }
while(false);

Заставить это не считаться за 9

function doWhileLoop(num)  {
   if(num>9) {
      num = 9;
   }

   var i = 0; 

  function incrementVariable() {
    i++
    return i;
  }
  do {
    console.log("I run once regardless.");
   }
  while(incrementVariable() <= num);
 }
...