这个if / else代码有什么问题?

时间:2016-08-25 19:48:28

标签: javascript

这些说明有什么问题? 打印出1到20之间的数字。 规则: 对于可被3整除的数字,请打印出“Fizz”。 对于可被5整除的数字,请打印出“Buzz”。 对于可被3和5整除的数字,请在控制台中打印出“FizzBu​​zz”。 否则,只需打印出数字。

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

6 个答案:

答案 0 :(得分:2)

else if时,数字可被3整除。此外,您需要了解number % 3 == 0并考虑您的条件顺序。这就是解决这个问题所需要的一切。

向您展示解决方案无助于您学习编程。

答案 1 :(得分:1)

您似乎正在尝试这样做:

librrary(ggplot2)
df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),
                      y = rnorm(30))
plot.to.be.saved <- ggplot(df) + geom_point(aes(x = gp, y = y))
sink('/dev/null')
ggsave(filename = '~/.so.pdf', plot = plot.to.be.saved)
sink()
# Saving 7 x 7 in image

options(warn=-1)

no.output.please <- ggsave(filename = '~/.so.pdf', plot = plot.to.be.saved)
# Saving 7 x 7 in image
capture.output(ggsave(filename = '~/.so.pdf', plot = plot.to.be.saved), file = 'NUL')
# Saving 7 x 7 in image

考虑这个条件应该是第一个:

for (var i = 1; i < 21; 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);
    }
}

否则,对于15号

,它会工作错误

答案 2 :(得分:0)

%运算符返回值不是布尔值,而是除法运算的其余部分。所以你需要检查余数是否为0。

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

答案 3 :(得分:0)

%运算符返回余数,所以如果我们这样做:

myDiv.textContent='';

结果为0 - 因为3是9的平方根...你的if条件是否检查非零结果。

你应该这样做:

9 % 3

检查返回0。

另外,考虑在代码中使用sme if (! (i % 3)) 和正确的嵌套,你会没事的。

答案 4 :(得分:0)

您不会检查该号码是否可被3或5整除。你在检查它是否属实。

这就是你应该做的事情:

func1()

mod函数“%”返回余数。如果没有剩余部分,那就是一个干净的部门。所以你想确保结果为0.

答案 5 :(得分:0)

i % x会返回i / x的剩余部分,因此您需要检查== 0

此外,您应首先检查i % 3 == 0 && i % 5 == 0并使用else if,否则您的所有语句都将一直执行,无论之前的语句是否已经存在。

for (var i = 1; i < 21; 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);
  }
}