【问题标题】:Does ordering matter in if-else statements for fizz buzz?if-else 语句中的顺序对于嘶嘶声是否重要?
【发布时间】:2014-08-04 22:08:32
【问题描述】:

我刚刚进行了嘶嘶声测试,但与下面的答案不同。我将第一个“if”语句(即i%3===0 && i%5===0)作为我的最后一个“else if”语句,但由于某种原因它不起作用。不过我的逻辑是一样的。

有谁知道为什么它不起作用?您为 if、else 语句放置的位置真的很重要吗?下面是答案的关键。

for(var i = 1; i < 100; 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 < 100; i++){
     if (i%5 === 0){
        console.log("Buzz");
      }
      else if(i%3 === 0) {
        console.log("Fizz");
      }
      else if (i%3 === 0 && i%5 === 0){
        console.log("FizzBuzz");
      }
      else {
        console.log(i);
      }
}

【问题讨论】:

    标签: javascript fizzbuzz


    【解决方案1】:

    如果您将if (i%3 === 0 &amp;&amp; i%5 === 0) 作为链中的最后一个if,则只会进入前面的分支中的一个——即if (i%3 === 0)if (i%5 === 0)。由于您使用的是else ifs,因此控制永远不会进入组合的“FizzBu​​zz”if

    例如:假设i = 15。如果你有以下代码:

    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);
    }
    

    您的输出将是FizzBuzz。但是,如果您将组合的 if 移动到末尾,如下所示:

    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);
    }
    

    那么你的输出将只是Fizz,因为i%3 === 0

    【讨论】:

    • 我想我不明白。我看不出有 fizz "if" 语句和 "buzz" if 语句是如何解释 if(i%3 === 0 && i%5 === 0) b/c 它没有得到两者( &&) 他们……我错过了什么吗??
    • @user3806909 我刚刚意识到我的答案不正确。我编辑了它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多