【问题标题】:Creating simple calculator创建简单的计算器
【发布时间】:2018-05-29 16:27:55
【问题描述】:

我正在尝试解决给我的一个问题,它涉及使用基本循环、函数和条件。我得到了以下信息:

// TODO: complete program

console.log(calculate(4, "+", 6));  // Must show 10
console.log(calculate(4, "-", 6));  // Must show -2
console.log(calculate(2, "*", 0));  // Must show 0
console.log(calculate(12, "/", 0)); // Must show Infinity

这是我的尝试(当然不起作用)。谁能给我指点一下我做错了什么?

function calculate(n1, n2, n3) {
  let calc
  if n2 = "+" {
    (calc = +)
  };
  else if n2 = "-" {
    (calc = -)
  };
  else if n2 = "*" {
    (calc = * )
  };
  else {
    (calc = /)
  };
  let acalc = (n1 + n2 + n3);
  return acalc;
}

console.log(calculate(4, "+", 6)); // Must show 10
console.log(calculate(4, "-", 6)); // Must show -2
console.log(calculate(2, "*", 0)); // Must show 0
console.log(calculate(12, "/", 0)); // Must show Infinity

【问题讨论】:

  • 您遇到的意外结果是什么
  • 我得到的错误是“意外的标识符”,控制台中没有显示任何内容。
  • 比较n2时,需要使用===。目前您正在使用赋值运算符=。您的 if 语句周围也缺少括号
  • (calc = /) 或 ifs 中列出的任何表达式都不是有效表达式
  • 有很多基本的语言和语法问题 - if/else 语句上的分号,使用赋值运算符代替相等检查(= vs =====)等等东西。

标签: javascript function loops calculator


【解决方案1】:

您不能将变量设置为等于运算符。您的 if 块应该如下所示:

if (n2 == "+") {
  return parseInt(n1) + parseInt(n3);
};

如果您传递的是字符串而不是数字,请使用 parseInt

【讨论】:

  • if 块之后的分号也是完全没有必要的,如果尝试执行 else... 也会出现语法错误... 比较运算符是 == 而不是 =... 还有括号除非您正在执行复杂的计算,否则这些分配也不是必需的......
  • 是的,在做更复杂的事情之前,OP 可能应该遵循一个教程来熟悉语法w3schools.com/jS/default.asp
  • 谢谢@Fueled By Coffee 我正在学习中,所以这次练习萨沙。
【解决方案2】:

我会采用 n2 参数中给出的输入并直接返回计算结果。您的代码中的 () 也有一些问题。

function calculate(n1, n2, n3) {
if (n2 == "+") {
    return n1 + n3;
} else if (n2 == "-") {
    return n1 - n3;
} else if (n2 == "*") {
    return n1 * n3;
} else {
    return n1 / n3;
}; };

【讨论】:

  • 很好,这可能是我首先需要做的,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多