Fizz Buzz解决方案:意外的令牌功能?

时间:2018-11-03 19:38:12

标签: javascript fizzbuzz

我对这段代码感到沮丧。我可能没有看到。 我一直收到“意外令牌”或“ ILLEGAL”错误(考虑到我一生中从未见过这样的错误,后者使我完全困惑。

我一直在仔细检查语法,我认为这可能是我没有抓住的东西吗?

function fizzBuzz(n) {
  for (i = 0; i<=n; i++) {
    if (n%3===0) {
      print ("fizz")
    }
    if (n%5===0) {
      print ("buzz")
    }
    if (i%3 !== 0 && i%5 !== 0) {
      return [i];
    }
  }
}
fizzBuzz(100);

感谢您的帮助! <3

4 个答案:

答案 0 :(得分:0)

您需要进行一些更改:

  • 删除行号,

  • 首先检查'fizz buzz'的值,然后使用console.log进行输出。然后使用continue语句跳到下一个循环的顶部,

  • 使用i而非n进行检查。

function fizzBuzz(n) {
    for (i = 0; i <= n; i++) {
        if (i % 3 === 0 && i % 5 === 0) {
            console.log("fizz buzz");
            continue;
        }
        if (i % 3 === 0) {
            console.log("fizz");
            continue;
        }
        if (i % 5 === 0) {
            console.log("buzz");
            continue;
        }
        console.log(i);
    }
}

fizzBuzz(100);

答案 1 :(得分:0)

std::vector<int> foo(x * x);

// access column `c` at row `r` like
foo[r * x + c];

行号是导致“ ILLEGAL”错误的原因。删除它们。

JavaScript中的

for(std::size_t i{}; i < x; ++i, std::cout.put('\n')) std::copy(foo.begin() + i * x, foo.begin() + (i+1) * x, std::ostream_iterator<int>(std::cout, " ")); 打开打印对话框,从字面上将纸张打印出打印机。使用function fizzBuzz(n) { 2 for (i = 0; i<=n; i++) { 3 if (n%3===0) { You're checking if the maximum number (n) is divisible by 3. 4 print ("fizz") You should be checking i. 5 } 6 if (n%5===0) { You're checking if the maximum number (n) is divisible by 5. 7 print ("buzz") You should be checking i. 8 } 9 if (i%3 !== 0 && i%5 !== 0) { 10 return [i]; You're returning an array with a single element: i. 11 } You should print i instead. 12 } 13 } 14 15 16 fizzBuzz(100);

如果数字可以被3和5整除,则应打印print。您的代码在单独的行上打印console.logfizzbuzz

工作版本(https://www.youtube.com/watch?v=QPZ0pIK_wsc):

fizz

答案 2 :(得分:0)

让我们减少if语句的数量,我已经看到很多嘶嘶声-我想尝试另一种方法

const fizzBuzz = (i = 0, ret) => {
  while (++i, ret = '', i <= 100) {
    if (i % 3 === 0) {
      ret += `fizz`
    }
    if (i % 5 === 0) {
      ret += `buzz`
    }
    console.log(ret || i)
  }
}

fizzBuzz()

最重要的部分是console.log(ret || i)-空字符串是虚假值,因此,如果存在某个值,控制台将记录ret i

答案 3 :(得分:0)

如果您尝试打印到浏览器的控制台,请使用console.log()而不是print(),因为print()将在浏览器中打开打印机预览。我正在使用Chrome。如果您创建了包含JavaScript脚本的html文件,请记住通过按F12并单击“控制台”来检查控制台。

由于您要迭代i直到其达到n的值,因此if语句应类似于:

if(i%3===0){ // your code... }

根据您的代码,您似乎想检查的值不是3的倍数和&的5的倍数。但是,fizzbuzz挑战需要在遇到一个数字同时是f的倍数时打印fizzbuzz。 3 && 5的倍数。因此,您需要添加以下条件:

       if (i%3 === 0 && i%5 === 0) {
            console.log("fizzbuzz");
            continue; /* Continue may or may not be necessary depending on your program's logic. Continue allows to re-enter the loop 
without checking for the remaining if statements. If you use continue, this condition must be the first if statement inside the loop */
            } 

您的函数不需要返回任何内容,因为您正在使用console.log()可视化每次循环迭代中的值。这就是为什么您需要将return [i]更改为console.log(i)的原因。

不要放弃,继续尝试!

如果您还有其他问题,我们很乐意为您提供帮助。