暮色呼如
2023-11-02 17:29:35
為什么這在 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
提交
取消