JavaScript奇偶数字代码执行异常及数组存储实现咨询
问题分析与修复方案
原代码的问题
- 第二个循环无法运行的原因:你把
num赋值成了空字符串"",在判断循环条件i < num时,空字符串会被隐式转为数字0,0 < 0不成立,循环直接跳过,根本不会执行。 - 第一个循环的逻辑隐患:
prompt返回的是字符串类型,虽然JS会隐式转换,但容易出问题;而且循环里i始终是0,靠num--控制循环,逻辑混乱,不符合常规写法。
满足需求的修复代码
// 获取输入并转为数字,同时处理非数字输入的情况 let inputNum = parseInt(prompt("请输入一个数字")); if (isNaN(inputNum)) { alert("请输入有效的数字!"); } else { // 初始化存储奇偶的数组 const evenNumbers = []; const oddNumbers = []; // 遍历1到输入数字的所有整数 for (let i = 1; i <= inputNum; i++) { if (i % 2 === 0) { evenNumbers.push(i); console.log(`偶数:${i}`); } else { oddNumbers.push(i); console.log(`奇数:${i}`); } } // 打印最终的奇偶数组 console.log("所有偶数数组:", evenNumbers); console.log("所有奇数数组:", oddNumbers); }
代码说明
- 先把输入转为整数,用
isNaN判断是否为有效数字,避免非数字输入的错误。 - 用一个循环遍历1到输入数字的所有数,一次判断奇偶,分别存入对应数组,同时输出。
- 最后打印两个数组,方便查看结果。
内容的提问来源于stack exchange,提问作者Alexandru Durbailo
相关产品推荐
相关产品推荐

