1

我正在尝试做一些简单的测试来帮助进一步了解我的 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 的每个数字,我不知道为什么。可能是这里最简单的问题,但它让我很头疼!

4

2 回答 2

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)

于 2012-12-06T04:00:42.980 回答
-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(或任何语言)最困难的部分之一是理解解决方案可以通过多种方式实现。我更喜欢第一个示例,但继续思考并查看其他选项总是好的。

于 2015-01-02T00:13:00.107 回答