类似于FizzBu​​zz的扭曲

时间:2016-02-18 01:17:21

标签: javascript

编写一个javascript程序,显示从10到100的数字。但是对于4的打印“Penny”而不是数字的倍数和6的打印“Leonard”的倍数。对于4和6的倍数的数字打印“Bazzinga”

我知道如何做两部分努力打印6和4;

function baZzinga (number) {
  for (var number = 10; number <= 101; number++) 
if(number % 4 == 0) {
console.log("penny");
}
else if (number % 6 == 0) {
 console.log("Leonard");
} else if ( not sure what goes here) {
 help help help
} else {
console.log(number");
}

4 个答案:

答案 0 :(得分:0)

You want the and condition first. Try this

var result = document.getElementById("result");

function baZzinga (number) {
    for (var number = 10; number <= 101; number++)  {
        if (number % 4 == 0 && number % 6 == 0) {
            result.innerHTML += "Bazinga";
        } 
        else if(number % 4 == 0) {
            result.innerHTML += "penny";
        }
        else if (number % 6 == 0) {
            result.innerHTML += "Leonard";
        } 
        else {
            result.innerHTML += number;
        }
   }
}

baZzinga()
<p id="result"></p>

I changed console.log to result.innerHTML because I wanted to demonstrate it in a snippet.

答案 1 :(得分:0)

我对你的代码有一些评论 - 建设性的批评,我希望!首先,您不需要number函数中的bazzinga参数。接下来,您发布的代码缩进使其难以阅读。最后,您几乎应该始终使用===而不是=====测试严格相等,而==尝试首先进行某些类型转换(因此可能产生意外结果)。请参阅the official docs

回答你的问题:首先检查6和8的可分性。这样,它将覆盖个别情况。我相信你想要这样的东西:

function bazzinga() {
  for (var number = 10; number <= 100; number++) {
    if (number % 4 === 0 && number % 6 === 0) {
      console.log("Bazzinga");
    } else if (number % 4 === 0) {
      console.log("Penny");
    } else if (number % 6 === 0) {
      console.log("Leonard");
    }
  }
}

答案 2 :(得分:0)

以下是使用您发布的格式的解决方案:

  for (var number = 10; number <= 100; number++) {
    if(number % 4 === 0 && number % 6 === 0){
      console.log("bazzinga");
    } else if(number % 4 === 0) {
    console.log("penny");
    } else if (number % 6 === 0) {
     console.log("Leonard");
    } else {
    console.log(number);
   }
}

或者使用三元运算符更简洁!

for (var i = 10; i <= 100; i++){
  var penny = i % 4 === 0;
  var leonard = i % 6 === 0;
  console.log(penny ? (leonard ? "bazzinga" : "penny"): leonard ? "leonard" : i);
}

答案 3 :(得分:0)

function process_num(num) {
  return num % 4 == 0 ? num % 6 == 0 ? "Bazzinga" : "Penny" : num % 6 == 0 ? "Leonard" : num;
}

for (x = 10; x <= 100; x++) { console.log( x + ': is ', process_num(x)) }

嵌套三元运算符的简洁性

如果它通过外部三元测试,它可以被4整除:

  • 进入嵌套的termary one以测试对于BaZzinga奖,num是否也可以被6整除!!
  • 如果它未通过BaZzinga挑战,我们知道它之前通过了可被4整除的测试,因此打印&#34;便士&#34;

如果没有外部三元条件,我们就知道它不能被4整除:

  • 输入嵌套的三元二,以考虑是否可被6整除。如果是这样打印&#34;伦纳德&#34;。
  • 如果不是,它的外部(div为4)和内部(div为6)都失败了,所以返回数字不变。

现在逻辑包含在函数中,我们可以创建一个for循环来迭代所需的数字,打印出正确的值。