Javascript计算器添加无法正常工作

时间:2017-01-29 20:14:49

标签: javascript function math

这是我真正基本的Javascript计算器代码。除了添加符号,我的计算器工作正常。然而,添加并没有完成它的工作:相反,它结合了它们。如何解决?

var first = prompt("First number");
var second = prompt("Second number");
parseInt(first);
parseInt(second);
var islem = prompt("Is it +/-/* or /?");
if (islem == "+" ) {
    document.write(first + second);
}
else if ( islem == "-") {
    document.write(first - second);
}
else if ( islem == "*" ) {
    document.write(first * second);
}
else {
    document.write(first / second);
}

5 个答案:

答案 0 :(得分:4)

parseInt()函数解析字符串参数并返回一个整数。

您必须为变量指定parsed值,如下所示:

first=parseInt(first);
second=parseInt(second);

或者简单地说,

document.write(parseInt(first)+parseInt(second));

参见参考here



var first = prompt("First number");
var second = prompt("Second number");
parseInt(first);
parseInt(second);
var islem = prompt("Is it +/-/* or /?");
if (islem == "+" ) {
    document.write(parseInt(first)+parseInt(second));
}
else if ( islem == "-") {
    document.write(first-second);
}
else if ( islem == "*" ) {
    document.write(first*second);
}
else {
    document.write(first/second);
}




答案 1 :(得分:4)

使用parseInt()时,您需要捕获返回的值,以便可以使用该数字。现在,您正在调用parseInt()并且没有对返回的值执行任何操作,因此它会立即丢失。

建议使用可选的第二个参数parseInt(),这是设置您正在使用的数字基数的基数值。通常,在使用基数为10的数字时,您希望100。这非常重要,因为如果您使用的字符串以0x开头并且您没有提供基数,则操作将假定您正在使用八进制值并且如果字符串是从var first = prompt("First number"); var second = prompt("Second number"); first = parseInt(first, 10); second = parseInt(second, 10); ,然后操作将假定您正在使用十六进制(基数为16)的值。

详细了解如何使用parseInt()

代码应为:

Cipher

答案 2 :(得分:4)

您没有将parseInt结果存储在任何位置,而是对字符串执行操作。 由于+也是一个字符串连接操作,因此会得到连接字符串。尝试将第3-4行更改为:

first = parseInt(first, 10); //don't forget the base!
second = parseInt(second, 10);
//TBD: add some error handling code to check values

答案 3 :(得分:2)

这是正确的计划:

var first = prompt("First number");
var second = prompt("Second number");
var firstParsedInteger = parseInt(first);
var secondParsedInteger = parseInt(second);
var islem = prompt("Is it +/-/* or /?");
if (islem == "+" ) {
    document.write(firstParsedInteger + secondParsedInteger);
}
else if ( islem == "-") {
    document.write(first-second);
}
else if ( islem == "*" ) {
    document.write(first*second);
}
else {
    document.write(first/second);
}

注意:您从未使用过解析的值。在javascript中,如果您使用var作为数字并使用' +'运营商。这会将这些数字视为字符串而不是数字。记得在javascript中使用var和+时解析整数。

答案 4 :(得分:2)

这些答案都很棒!我更进了一步

1)立即在提示符上调用parseInt(),这样您就不会声明多少不必要的变量

2)使用switch语句而不是if / else!它可以更容易地添加其他情况,取幂等等。这更像是一种风格选择:)

3)您还可以考虑使用parseFloat()代替parseInt(),以便它可以处理小数输入!

var first = parseInt(prompt("First number"));
var second = parseInt(prompt("Second number"));
var islem = prompt("Is it +/-/* or /?");
switch (islem) {
    case "+":
        document.write(first+second);
        break;
    case "-":
        document.write(first-second);
        break;
    case "*":
        document.write(first*second);
        break;
    case "/":
        document.write(first/second);
        break;
    default:
        document.write("Excuse me? Give me an operator, please!");
};