我正在尝试做一些简单的测试来帮助我进一步提高我的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的每个数字,我不知道为什么。可能是这里最简单的最简单的问题,但是我正在努力!
答案 0 :(得分:4)
我认为你的意思是&&
,而不是||
。使用||
,您基本上是在测试数字是否不能被3或5整除 - 只有当一个数字可被两个整除时才拒绝它(换句话说,15的倍数)。
FizzBuzz的典型答案是:
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(或任何语言)最困难的部分之一是理解解决方案可以有多种方式。我更喜欢第一个例子,但是继续思考并查看其他选项总是好的。