Javascript中的逻辑运算符
当我可以被3和5整除时,我想打印出FizzBuzz。我的代码可能有什么问题Javascript中的逻辑运算符,javascript,nested,Javascript,Nested,当我可以被3和5整除时,我想打印出FizzBuzz。我的代码可能有什么问题 for(var i = 1; i<=20; i++){ if(i % 3 ===0){ console.log("Fizz"); }else if(i % 5 ===0){ console.log("Buzz"); }else if(i%3 ==0 && i%5 ==0){ console.log("FizzBu
for(var i = 1; i<=20; i++){
if(i % 3 ===0){
console.log("Fizz");
}else if(i % 5 ===0){
console.log("Buzz");
}else if(i%3 ==0 && i%5 ==0){
console.log("FizzBuzz");
}else{
console.log(i);
}
}
for(var i=1;i如果第一个或第二个条件为真,则进入该块,但如果
条件为真,则不计算任何其他条件。因为第三个条件要求第一个和第二个条件都为真,所以它永远不会进入该块
试着这样安排你的条件:
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);
}
}
for(var i=1;i主要问题是,只有在进行其他比较之后,才会对“FizzBuzz”进行检查。如果i%3===0
(打印“FizzBuzz”的要求之一),它将永远不会到达FizzBuzz检查
作为一个简单的修复,将FizzBuzz检查移到第一个if语句
for(var i = 1; i <= 20; i++) {
if(i % 3 === 0 && i % 5 === 0) {
console.log("FizzBuzz");
}
else if(i % 5 === 0) {
console.log("Buzz");
}
else if(i % 3 === 0) {
console.log("FizzBuzz");
}
else {
console.log(i);
}
}
…与
if(i % 15 === 0) {
(i%3==0&&i%5==0)
应该是第一个条件。如果你仔细想想,如果我可以被3和5整除,那么在到达第三个条件之前,它将进入第一个If
语句。因为匹配的第一个条件将执行,其他条件都不会执行。那么它可以被15整除=>当然,但是15是最大的公约数吗?在这种情况下,它是因为3和5都是素数,但对于非素数,它不一定是这样工作的。@Jon你是说最小公分母吗?是的;它正好是3*5,因为它们都是素数。是的,mindblock,对不起。LCD是正确的,而不是GCD。只是说一些解释为什么它是等价的会有帮助。@Jon-添加了一个小解释在LCDAn上实现更紧凑(更高效)的解决方案,使用条件运算符:console.log((i%3?:“Fizz”)+(i%5?:“Buzz”)| | i)
if(i % 3 === 0 && i % 5 === 0) {
if(i % 15 === 0) {