我正在通过codeacademys JavaScript教程,因为我是新手。本教程要求以下内容:
打印出1到20之间的数字。
规则:
- 对于可被3整除的数字,请打印出“Fizz”。
- 对于可被5整除的数字,请打印出“Buzz”。
- 对于可被3和5整除的数字,在控制台中打印出“FizzBuzz”。
- 否则,只需打印出数字。
这是我的代码:
for (i=1; i<=20; i++) {
if(i%3==0) {
console.log("Fizz");
}
if(i%5==0){
console.log("Buzz");
}else if (i%5==0 && i%3==0) {
console.log("fizzBuzz");
} else {
console.log(i);
}
}
我收到一条错误消息,说我打印出错误数量的商品,有人知道为什么会这样吗?
答案 0 :(得分:2)
必须首先检查3和5,否则其他两个语句已经为真,并给出单独的日志。现在,您可以在一个console.log
语句中打印FizzBuzz。
for (i=1; i<=20; i++) {
if (i%5==0 && i%3==0) {
console.log("FizzBuzz");
} else if(i%3==0) {
console.log("Fizz");
} else if(i%5==0){
console.log("Buzz");
} else {
console.log(i);
}
}
答案 1 :(得分:1)
当值可以被3整除而不是5时,在第一个If语句中将打印“Fizz”。
然后在第二个if语句中,最后一个else被命中,因此也将打印该数字。如果需要,您需要将if(i%5 == 0)更改为else。
然而,当(i%5 == 0&amp;&amp; i%3 == 0)作为其他的时候会出现问题,如果它永远不会被击中。您可以通过将此作为第一个比较并将输出更改为FizzBuzz来解决此问题。
像这样:
for ( i = 1; i <= 20; i++) {
if (i % 5 === 0 && i % 3 === 0) {
console.log("FizzBuzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
};
请确保您了解为什么这会在您继续之前修复您的问题,因为您很可能再次犯同样的错误。
如果您希望我更清楚地解释您是否正在努力解决您出错的原因,请添加评论。
答案 2 :(得分:0)
你应该检查一个数字是否可以被第一个IF中的3和5整除,因为可被两者整除的数字否则会导致第一个和第二个IF语句被执行。
此外,规则告诉你写出“FizzBuzz”,以防一个数字被两者整除,而目前你只打印出“Buzz”。
答案 3 :(得分:0)
你自己尝试过吗?因为当你运行它时你得到这个输出:
1
2
"Fizz"
3
4
"Buzz"
"Fizz"
6
7
8
"Fizz"
9
"Buzz"
11
"Fizz"
12
13
14
"Fizz"
"Buzz"
16
17
"Fizz"
18
19
"Buzz"
正如您所看到的,即使您打印Fizz
,也打印出数字,并且您实际上应该在一行中打印FizzBuzz
,而不是两个单独的行。{/ p >
要修复前一个问题,您应该看一下if / else结构。你在Fizz
开头就有一个单独的if。之后,您也将单独处理Buzz
,如果没有匹配,它将打印出数字。因此,虽然您已经打印了Fizz
,但您仍然要去最后else
。因此,您应该将这两个单独的if块组合成一个块。
另一个问题是console.log
将始终写一个单独的行。因此,在您检查所有FizzBuzz
条件的情况下,您应该打印FizzBuzz
。您还需要先检查一下,否则Buzz
条件将首先出现,而不会让您有机会打印FizzBuzz
。
答案 4 :(得分:0)
尝试手动浏览逻辑。如果i
为1
,则只有最后一个块有效。如果i
为3
,则第一个块有效。如果i
为5
,则第二个块有效。如果i
为15
,则第二个块有效,第三个块永远不会有机会。
一般而言,限制性最强的条件在限制性最小之前运行。当两个块不同时,您还应该注意并仔细检查。您有四个块,只有一个块是else
块。
答案 5 :(得分:0)
这是我得到的答案正确。
for(var i=1;i<=20;i++)
{
if(i%3 === 0 && i%5 === 0)
{
console.log("FizzBuzz");
}
else if(i%3 === 0)
{
console.log("Fizz");
}
else if(i%5 === 0)
{
console.log("Buzz");
}
else
{
console.log(i);
}
}
结果将是:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz
答案 6 :(得分:0)
嗨,请检查¨=¨
for (i = 1; i <= 20; i++) {
if (i%3===0 && i%5===0) {
console.log("FizzBuzz");
}
else if (i%3===0) {
console.log("Fizz");
}
else if (i%5===0) {
console.log("Buzz");
}
else {
console.log(i);
}
}
答案 7 :(得分:0)
for (var i=1 ; i<=20 ; i++){
if (i%3===0 && i%5!=0){
console.log("Fizz");
} else if (i%5===0 && i%3!=0){
console.log("Buzz");
} else if (i % 3 === 0 && i % 5 === 0 ){
console.log("FizzBuzz");
} else {
console.log (i);
}
}
答案 8 :(得分:0)
var i=1;
while (i<21)
{
if(i%3!==0 && i%5!==0)
{
console.log(i);
}
if(i%3===0 && i%5===0 )
{
console.log("FizzBuzz");
}
else if(i%3===0)
{
console.log("Fizz");
}
else if(i%5===0)
{
console.log("Buzz");
}
i++;
}
答案 9 :(得分:0)
我不了解Javascript,但我知道一些Python,而且我遇到了同样的问题。也许这可以帮助。我确定有人可以为Javascript翻译它。
以下是原始问题: 循环显示1到20之间的数字。如果数字可被3整除,则打印Hip。如果数字可以被7整除,请打印“Hooray”。
以下是针对类似问题的python代码:
for numbers in range(1,21):
if numbers % 3 !=0 and numbers % 7 != 0:
print(numbers)
if numbers % 3 == 0:
print("Hip")
if numbers % 7 == 0:
print("Hooray")
以下是输出:
1 2 髋关节 4 五 髋关节 万岁 8 髋关节 10 11 髋关节 13 万岁 髋关节 16 17 髋关节 19 20