为什么这在 Java 中可行,但在 JavaScript 中不行?我尝试在 Java 中使用它,它工作得很好,但我不明白为什么它只在 JavaScript 中打印“不是回文”?谢谢 var n = 121; var sum = 0, r; var temp = n; while(n>0) { r = n % 10; sum = (sum*10)+r; n = n/10; } if(temp==sum) console.log("It is a Palindrome number."); else console.log("Not a palindrome");
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
当您需要向下除法(也称为整数除法)时,您正在使用浮点除法,因为 JS 数字始终是浮点数。要修复此问题,请在除法之后使用 Math.floor:
var n = 121;
var sum = 0
var r;
var temp = n;
while(n > 0){
r = n % 10;
sum = (sum * 10) + r;
n = Math.floor(n / 10);
}
if(temp == sum){
console.log("It is a palindrome number.");
}else{
console.log("Not a palindrome");
}
月关宝盒
TA贡献1772条经验 获得超5个赞
该代码在 java 和 javascript 中的结果不完全相同的原因是数据类型的差异。
您(很可能)在 java 中声明变量,如下所示:
int n = 121; // this is strictly an integer
而当你在 javascript 中声明时:
var n = 121; // this is interpreted according to the calculation where used
所以在java中,n/10会给你一个整数,一个四舍五入的整数答案。
但在 javascript 中,n/10 可能会给你一个十进制值。这就是你的程序失败的地方。
解决方案:在 javascript 中 使用适当的Math.ceil()
或floor()
函数,使其四舍五入到最接近的整数值。我会让您弄清楚在这种情况下您需要哪一个。
添加回答
举报
0/150
提交
取消