不工作时做

Do while is not working

本文关键字:工作      更新时间:2024-05-27

当数组当前值等于0时,我想停止while循环。我知道这是一个简单的代码,但我找不到错误。

function numbersSum(inputArray) {
  var numberSum = 0,
      i = 0,
      x;
  do {
    x = inputArray[i++];
    numberSum += x;
  } while (x == 0);
  return numberSum;
}
document.getElementById("demo").innerHTML = numbersSum([5, 1, 2, 3, 0, 1, 5, 0, 2]);
<p id="demo"></p>

只需将比较更改为负面评估:

function numbersSum(inputArray) {
  var numberSum = 0,
      i = 0,
      x;
  do {
    x = inputArray[i++];
    numberSum += x;
  } while (x !== 0); // <-- !== instead of ==
  return numberSum;
}
document.getElementById("demo").innerHTML = numbersSum([5, 1, 2, 3, 0, 1, 5, 0, 2]);
<p id="demo"></p>

while (x == 0); //Error
while (x != 0); //Correction

只有当当前元素等于0时,电流do while才会运行,如果x始终等于0,则校正的线将脱离循环。

while (x == 0)更改为while (x != 0)

只有当当前元素等于0时,do while循环才会循环。

function numbersSum(inputArray) {
  var numberSum = 0,
      i = 0,
      x;
  do {
    x = inputArray[i++];
    numberSum += x;
  } while (x != 0);
  return numberSum;
}
document.getElementById("demo").innerHTML = numbersSum([5, 1, 2, 3, 0, 1, 5, 0, 2]);
<p id="demo"></p>

这里:while (x == 0);是不工作的原因

正如你所看到的,条件被声明为"只要数组中的元素为零,就在NumberSum中递增",因此不会从数组中的第一个数字5开始

([5, 1, 2, 3, 0, 1, 5, 0, 2]};

将逻辑更改为while (x !+= 0);

最终代码:

function numbersSum(inputArray) {
  var numberSum = 0,
      i = 0,
      x;
  do {
    x = inputArray[i++];
    numberSum += x;
  } while (x !== 0);
  return numberSum;
}
document.getElementById("demo").innerHTML = numbersSum([5, 1, 2, 3, 0, 1, 5, 0, 2]);
<p id="demo"></p>

您的错误在这里:

while(x!=0)而不是while(x==0)

试试这个:

function numbersSum(inputArray) {
  var numberSum = 0,
  i = 0,
  x = 0;
  do {
    x = inputArray[i++];
    numberSum += x;
  } while (x != 0);
  return numberSum;
}
 document.getElementById("demo").innerHTML = numbersSum([5, 1, 2, 3, 0, 1,  5, 0, 2]);