7

我写了一个 JavaScript 计算器......但是假设当我给我的第一个数字2和第二个数字时3,结果显示为23,但我想将这两个数字相加。

谁能帮帮我吗?当我尝试减去这两个数字时也会发生这种情况。为什么这不起作用?

var cal = prompt("Please enter what type of calculation you want to do\n
if you wanna add enter = 1\n
if you want to minus enter = 2\n
if you want to divide enter = 3\n
if you want to multiply enter = 4");

if (cal == 1) {
    var a = prompt("Please enter your first number");
    var b = prompt("please enter your second number");

    alert("The result is , " + a+b);
}

if (cal == 2) {
    var c = prompt("Please enter your first number");
    var d = prompt("please enter your second number");

    alert("the result is , " + c - d);
}
4

11 回答 11

3

尝试这个:

var cal = prompt("Please enter what type of calculation you want to do\n" +
  "if you want to add enter = 1\n" +
  "if you want to minus enter = 2\n" +
  "if you want to divide enter = 3\n" +
  "if you want to multiply enter = 4");

if (cal == 1) {
    var a = prompt("Please enter your first number");
    var b = prompt("please enter your second number");

    alert("The result is , " + (Number(a) + Number(b)));
}

else if (cal == 2) {
    var c = prompt("Please enter your first number");
    var d = prompt("please enter your second number");

    alert("the result is , " + (Number(c) - Number(d)));
}
于 2013-04-30T05:11:44.747 回答
1

+符号用于将字符串连接在一起,而不是在数学上将它们加在一起。

您需要将变量包装在 中parseInt(),例如

alert("The result is , " + parseInt(a)+parseInt(b));
于 2013-04-30T05:10:38.207 回答
1

从用户那里接受字符串后,将其转换为数字:

a = parseInt(a, 10);
于 2013-04-30T05:10:38.730 回答
1

提示返回字符串,您需要将它们解析为整数(您也可以使用浮点数parseFloat

alert("The result is , " + (parseInt(a) + parseInt(b)));

于 2013-04-30T05:10:44.540 回答
1

Prompt方法将输入的值作为字符串返回。

所以在Prompt使用之后parseInt(),这个函数解析一个字符串并返回一个整数。

于 2013-04-30T05:15:16.933 回答
1

二元 +运算符有两种用途:加法和字符串连接。尽管您想要前者,但后者正在发生,因为window.prompt()返回一个字符串。

为避免这种情况,您应该执行以下操作之一(阅读文档以便了解差异):

在尝试使用它们执行计算之前检查是否可以解析数字是明智的(使用isNaN(num)或可能),因此您的脚本可以显示有用的错误消息,而不仅仅是传递到其输出。num === numNaN

于 2013-04-30T05:29:09.147 回答
0

利用

alert("The result is , " + (parseFloat(a)+parseFloat(b)));
于 2013-04-30T05:12:32.093 回答
0

我认为这是因为 var 是动态类型变量,所以你的变量被翻译为字符串。

请注意,函数可以接收双倍,因此parseInt可能无法正常工作

function Add(a,b)
{
   var result = null;

   if (isNaN(a) || isNaN(b))
   {
      alert("Please send the number");
      return;
   }

   a = Number(a);
   b= Number(b);

   return a+b;
}
于 2013-04-30T05:13:49.723 回答
0

您正在添加字符串;称为串联,您需要将字符串表示形式转换为数字,然后将它们相加。

alert("The result is , " + (parseInt(a) + parseInt(b)));
于 2013-04-30T05:10:36.983 回答
0

利用:

var add = parseFloat(a)+parseFloat(b);
于 2013-04-30T05:58:51.307 回答
0
num1 = window.prompt("Please Enter Your Num1 :");
num2 = window.prompt("Please Enter Your Num2 :");
var sum = parseInt(num1)+ parseInt(num2);
document.writeln("<h1> The summ of two integers,"+num1+", and,"+num2+", is ,"+sum+",</h1>"  )

我希望这能帮到您。

于 2017-03-07T19:13:13.177 回答