使用规则打印1-20之间的数字

时间:2013-10-07 10:50:34

标签: javascript

我正在通过codeacademys JavaScript教程,因为我是新手。本教程要求以下内容:

打印出1到20之间的数字。
规则:
- 对于可被3整除的数字,请打印出“Fizz”。
- 对于可被5整除的数字,请打印出“Buzz”。
- 对于可被3和5整除的数字,在控制台中打印出“FizzBu​​zz”。
- 否则,只需打印出数字。

这是我的代码:

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);
}

}

我收到一条错误消息,说我打印出错误数量的商品,有人知道为什么会这样吗?

10 个答案:

答案 0 :(得分:2)

必须首先检查3和5,否则其他两个语句已经为真,并给出单独的日志。现在,您可以在一个console.log语句中打印FizzBu​​zz。

   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)作为其他的时候会出现问题,如果它永远不会被击中。您可以通过将此作为第一个比较并将输出更改为FizzBu​​zz来解决此问题。

像这样:

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语句被执行。

此外,规则告诉你写出“FizzBu​​zz”,以防一个数字被两者整除,而目前你只打印出“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)

尝试手动浏览逻辑。如果i1,则只有最后一个块有效。如果i3,则第一个块有效。如果i5,则第二个块有效。如果i15,则第二个块有效,第三个块永远不会有机会。

一般而言,限制性最强的条件在限制性最小之前运行。当两个块不同时,您还应该注意并仔细检查。您有四个块,只有一个块是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 FizzBu​​zz 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