打破并继续替代

时间:2017-11-27 06:38:02

标签: javascript html

我想知道是否有其他替代方法,然后使用break和continue语句。这是我的代码

var i = 100;
var out = " ";
while (true) {
  i -= 2

  if (i % 6 == 0) {
    out += i + " ";
    continue;
  }
  if (i % 4 == 0) {
    out += i + " ";
    continue;
  }
  if (i % 7 == 0 && i % 5 == 0) {
    break;
  }
}
console.log(out);

3 个答案:

答案 0 :(得分:2)

您可以使用if-elsedo-while

var i = 100;
var out = " ";
do {
  i -= 2

  if (i % 6 == 0) {
    out += i + " ";
  } else if (i % 4 == 0) {
    out += i + " ";
  }
} while (!(i % 7 == 0 && i % 5 == 0));

console.log(out);

由于ifelse的正文相同,您可以使用||组合它们:

var i = 100;
var out = " ";
do {
  i -= 2

  if (i % 6 == 0 || i % 4 == 0) {
    out += i + " ";
  }
} while (!(i % 7 == 0 && i % 5 == 0));

console.log(out);

答案 1 :(得分:1)

下面应该产生相同的输出:

var i = 100;
var out = " ";
var looping = true;
do {
  i -= 2;
  if (i % 6 == 0 || i % 4 == 0) {
    out += i + " ";
  } else if(i % 7 == 0 && i % 5 == 0) {
      looping = false;
  }
} while (looping);
console.log(out);

答案 2 :(得分:0)

假设你必须使用while循环,你可以这样做:

var i = 100;
var out = " ";
while (!((i - 2) % 7 == 0 && (i - 2) % 5 == 0)) {
  i -= 2

  if (i % 6 == 0 || i % 4 == 0) {
    out += i + " ";
  }
}
console.log(out);

虽然三次处理负2代码似乎很难看。此外,您的代码(以及前面的示例)是错误的,因为传递100个产品" 96 92 90 88 84 80 78 76 72,"什么时候应该包括100。通过102产生" 100 96 92 90 88 84 80 78 76 72,"但也应包括102。输出不一致且意外。因此,我更喜欢for循环,如下所示:

var out = " ";
for (i = 98; !(i % 7 == 0 && i % 5 == 0); i -= 2) {
  if (i % 6 == 0 || i % 4 == 0) {
    out += i + " ";
  }
}
console.log(out);

你必须在98开始for循环,因为那真的是你的while循环开始的地方,因为while循环所做的第一件事是将i减少2.通过使用这个for循环,你可以使用它。重新操作传入的值,而不是将其改为其他东西,这会产生一致的预期结果。