【问题标题】:Javascript Trapezoid area calculation with user input, incorrect resultJavascript梯形面积计算与用户输入,不正确的结果
【发布时间】:2014-05-01 21:05:58
【问题描述】:

我正在尝试制作一个计算梯形面积的 javascript 程序。到目前为止,下面是我的 js 代码:

var lol=prompt("Please enter which 2d polygon you would like this awesome calculator to calculate.")
if(lol==="trapezoid"){
    var tr1=prompt("Enter the top base.")
    var tr2=prompt("Enter the bottom base.")
    var tr3=prompt("Now enter the height.")
    confirm((tr1+tr2)*(tr3)/2)
}

但是当我在计算器中输入 4、5、6 时,它会输出 135 而不是 27。

为什么?

【问题讨论】:

  • confirm((+tr1 + +tr2)*(+tr3)/2)
  • "4" + "5" = "45",不是 9
  • 为什么投反对票? OP 提出了一个他们试图解决的合理问题。
  • @JackZelig 看看这个问题的初始编辑。
  • 啊,好的。好像收拾了一下……

标签: javascript area


【解决方案1】:

您可以使用parseInt 将值设置为整数。

var lol=prompt("Please enter which 2d polygon you would like this awesome calculator to calculate.")
if(lol==="trapezoid"){
    var tr1=Number(prompt("Enter the top base."))
    var tr2=Number(prompt("Enter the bottom base."))
    var tr3=Number(prompt("Now enter the height."))
    confirm((tr1+tr2)*(tr3)/2)
}

这是一个带有 Benjamine 的 Number 点的 JSFiddle

http://jsfiddle.net/cXWnk/

【讨论】:

  • 没有 radix 参数的 parseInt 是有风险的,可能需要指定 radix,尽管您希望允许十进制数,所以可能选择 Number
【解决方案2】:

您从提示返回的值是字符串,正如 Ryan P 所说,“1”+“1”=“11”。

您需要做的是将字符串转换为整数,然后再在计算中使用它们的值。

您可以使用Number() 函数执行此操作。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

所以,你的代码可能是:

confirm((Number(tr1) + Number(tr2)) *(Number(tr3))/2)

或者,使用一元加速记:

confirm((+tr1 + +tr2)*(+tr3)/2)

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2019-12-17
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2017-07-02
    • 2014-05-03
    • 1970-01-01
    相关资源
    最近更新 更多