HTML回文判断程序输入111误判且reversed为infinity问题求助
问题根因
- 类型不匹配:通过
document.querySelector("#userInput").value拿到的输入值是字符串类型,直接赋值给temp参与算术运算存在隐式转换隐患。 - 循环未做取整处理:你没有对
temp / 10的结果做取整操作,输入111时第一次运算后temp值为11.1而非11,后续会依次生成1.11、0.111、0.0111这类正小数,永远满足temp > 0的判断条件,触发死循环。reversed变量在死循环中持续乘10累加,最终超过JavaScript可表示的最大数值范围,输出为infinity。
修复后的代码
function Palindrome() { // 先将输入值转为数字类型 let input = Number(document.querySelector("#userInput").value); let temp = input; let reversed = 0; while (temp > 0) { const lastDigit = temp % 10; reversed = (reversed * 10) + lastDigit; // 除以10后取整,保证temp最终会降到0 temp = Math.floor(temp / 10); } if (input == reversed) { document.querySelector("#answer").innerHTML = `This is a Palindrome `; }else { document.querySelector("#answer").innerHTML = `This is not a Palindrome ${input} ${temp} ${reversed} `; } }
验证效果
输入111时,temp会依次变为11、1、0,循环正常退出,reversed最终计算结果为111,可正确判定为回文。
内容的提问来源于stack exchange,提问作者Wietlol
相关产品推荐
相关产品推荐

