这是我真正基本的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);
}
答案 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的数字时,您希望10
为0
。这非常重要,因为如果您使用的字符串以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!");
};