【问题标题】:Fizz Buzz Solution: Unexpected Token Function?Fizz Buzz 解决方案:意外的令牌功能?
【发布时间】:2018-11-03 19:38:11
【问题描述】:

我对这段代码有些失望。我可能没看到。 我不断收到“Unexpected Token”或“ILLEGAL”错误(后者让我完全感到困惑,因为我以前从未见过这样的错误。

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

function fizzBuzz(n) {
2    for (i = 0; i<=n; i++) {
3    if (n%3===0) {
4    print ("fizz")
5    }
6    if (n%5===0) {
7    print ("buzz")
8    }
9    if (i%3 !== 0 && i%5 !== 0) {
10      return [i];
11    }
12    }
13    }
14    
15    
16    fizzBuzz(100);

感谢您的帮助!

【问题讨论】:

  • 代码格式化后...可能使用console.log代替打印

标签: javascript fizzbuzz


【解决方案1】:

你需要一些改变:

  • 删除行号,

  • 首先检查 '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);

【讨论】:

  • 天哪!谢谢妮娜!你是救生员!
【解决方案2】:
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);

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

print 在 JavaScript 中打开打印对话框以从打印机中打印纸张。使用console.log

如果一个数字可以被 3 和 5 整除,则应该打印fizzbuzz。您的代码将 fizzbuzz 打印在不同的行上。

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

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

【讨论】:

    【解决方案3】:

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

    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

    【讨论】:

      【解决方案4】:

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

      由于你正在迭代 i 直到它达到 n 的值,你的 if 语句应该如下所示:

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

      根据您的代码,您似乎想要检查的值不是 3 的倍数 && 不是 5 的倍数。但是,fizzbuzz 挑战需要在遇到既是 的倍数的数字时打印 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)

      不要放弃,继续努力!

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

      【讨论】:

        猜你喜欢
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 2017-11-08
        • 1970-01-01
        • 2014-03-07
        • 2018-02-02
        相关资源
        最近更新 更多