我想知道是否有其他替代方法,然后使用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);
答案 0 :(得分:2)
您可以使用if-else
和do-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);
由于if
和else
的正文相同,您可以使用||
组合它们:
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循环,你可以使用它。重新操作传入的值,而不是将其改为其他东西,这会产生一致的预期结果。