在javascript上练习

时间:2016-10-25 06:10:12

标签: javascript

从昨天开始,我就被困在这个问题中。以下是问题:

  

编写一个程序,使用console.log打印1中的所有数字   到100,有两个例外。对于可被3整除的数字,请打印“Fizz”   而不是数字,对于可被5(而不是3)整除的数字,打印   “Buzz”而不是。

     

如果你有这个工作,修改程序打印“FizzBu​​zz”,   对于可被3和5整除的数字(仍然打印“Fizz”或   对于可被其中一个整除的数字的“Buzz”。)

我只得到前两个条件而不是第三个条件。我不知道该怎么办,我尝试了很多选择。以下是我的代码:

<html>
<head/head>
<body>
    <script type="text/javascript">
        for (i = 1; i <= 100; i++)
            if (i % 3 == 0) {
                document.write("Fizz");
                document.write("<br />");
            } else if (i % 5 == 0 && i % 3 != 0) {
            document.write("Buzz");
            document.write("<br />");
            } else if (i % 3 && 5 == 0 && i % 3 != 0 && i % 5 != 0) {
                document.write("FizzBuzz");
                document.write("<br />");
            } else {
                document.write(+i);
                document.write("<br />");
            }
    </script>
</body>
</html>

6 个答案:

答案 0 :(得分:3)

首先检查最具体的(FizzBu​​zz)条件。

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

答案 1 :(得分:0)

这是你的代码的更新版本,我保留它,因为你写了一些更改,我使它工作没有触摸它的逻辑,你可以看到问题是在第一次比较和在第二个&#34; if else&#34; (5永远不会等于0)。你可以优化代码,祝你好运。

UIImage(named: "MyImage", in: Bundle(identifier: "bundleIdentifier"), compatibleWith: nil)

答案 2 :(得分:0)

由于每个人都在贡献,我不妨给你一个有趣的解决方案:

var i = 101;
while(i --> 0){                                         // as i goes to 0... wat
    var state = !!(i % 3) << 1 | !!(i % 5),             // compute state?
        output = ["FizzBuzz", "Fizz", "Buzz", i];       // hmm...
    console.log(output[state]);                         // output correct string
}

答案 3 :(得分:0)

1 - 而不是document.write使用console.log,而不是问题

2nd - 您在head部分有语法错误。它应该是<head></head>

第3 - 对于问题的第1个部分,您只需要:

for (i = 1; i <= 100; i++) {
  // if i is divisible by 3      
  if (i % 3 == 0) {
    console.log("Fizz");    
  }
  // if i is divisible by 5 (no need to check for 3 again)
  else if (i % 5 == 0) {
    console.log("Buzz");    
  } 
  // else
  else {
    console.log(i);
  }
}

4 - 对于第二部分,您需要在已经拥有的内容之外添加额外内容:

for (i = 1; i <= 100; i++) {
  // if i is divisible by 3 and 5
  if (i % 3 == 0 && i % 5 == 0) {
    console.log("FizzBuzz");
  }
  // if i is divisible by 3      
  else if (i % 3 == 0) {
    console.log("Fizz");    
  }
  // if i is divisible by 5 (no need to check for 3 again)
  else if (i % 5 == 0) {
    console.log("Buzz");    
  } 
  // else
  else {
    console.log(i);
  }
}

工作小提琴:https://jsfiddle.net/tedmanowar/amapqcLL/

答案 4 :(得分:0)

您可以使用 while 循环,而不是使用嵌套的 if 语句来检查条件。

let number = 0;
 while (number <= 100) {
    if(number % 3 === 0 && number % 5 === 0){
        console.log("FizzBuzz");
    }else if(number % 3 === 0){
         console.log("Fizz");
     }else if(number % 5 === 0){
         console.log("Buzz");
     }else{
         console.log(number);
     }
   number++;
 }

答案 5 :(得分:-1)

你应该只使用一个从1开始并且小于101(因此最多为100)的循环并测试%n === 0。换句话说,确保没有余数。

function startConsoleDemo(){
  for(var i=1,r; i<101; i++){ // loop from 1 to 100
    r = i; // default value of r
    if(i % 3 === 0 && i % 5 === 0){ // if i/3 and 1/5 do not produce a remainder
      r = 'FizzBuzz'; // reassign r
    }
    else if(i % 3 === 0){ // we knew i % 5 !== 0 so see if i/3 does not produce a remainder
      r = 'Fizz'; // reassign r
    }
    else if(i % 5 === 0){ // we already knew i % 3 !== 0 - you know the drill
      r = 'Buzz'; // reassign r
    }
    console.log(r); // console at each step of the loop no matter what
  }     
}
startConsoleDemo(); // without () you can use like a var then () later