Javascript Fizzbuzz问题

时间:2012-12-06 03:55:17

标签: javascript fizzbuzz

我正在尝试做一些简单的测试来帮助我进一步提高我的javascript知识(这是非常新鲜的)。目标1是打印1-100中不能被5或3整除的数字。

我尝试了以下内容:

for (var i = 1; i <= 100; i ++) 
{
    if (i%3 !== 0 || i%5 !== 0){
        console.log(i);
    }

}

这记录了1-100的每个数字,我不知道为什么。可能是这里最简单的最简单的问题,但是我正在努力!

2 个答案:

答案 0 :(得分:4)

我认为你的意思是&&,而不是||。使用||,您基本上是在测试数字是否不能被3或5整除 - 只有当一个数字可被两个整除时才拒绝它(换句话说,15的倍数)。

FizzBu​​zz的典型答案是:

if( i%3 == 0 && i%5 == 0) FizzBuzz
elseif( i % 3 == 0) Fizz
elseif( i % 5 == 0) Buzz
else number

因此,要直接获取i%3==0为假而且i%5==0为假所需的数字。因此,您需要if( i%3 !== 0 && i%5 !== 0)

答案 1 :(得分:-1)

我攻击这个就像Niet the Dark Absol一样:

for (var n = 1; n <= 100; n++) {
    if (n % 3 == 0 && n % 5 == 0)
        console.log("FizzBuzz");
    else if (n % 3 == 0)
        console.log("Fizz");
    else if (n % 5 == 0)
        console.log("Buzz");
    else
            console.log(n);
}

但是,您也可以这样做:

for (var n = 1; n <= 100; n++) {
    var output = "";
    if (n % 3 == 0)
        output += "Fizz";
    if (n % 5 == 0)
        output += "Buzz";
    console.log(output || n);
}

学习JavaScript(或任何语言)最困难的部分之一是理解解决方案可以有多种方式。我更喜欢第一个例子,但是继续思考并查看其他选项总是好的。