输入两个数字m和k,如何输出二者之间的非端点数字?
如何用JavaScript输出两个数字之间的数(不含边界)
需求:给定两个以空格分隔的数字m和k,输出二者之间的所有数字(不包含m和k本身)。
现有代码运行后不符合预期:
// print the numbers between this two numbers let a=[5,7]; var temp=[]; for(var i=5;i<=8;i++){ temp.push(i); } console.log(temp);
运行结果是 [5,6,7,8],但实际需要输出 6 7。
示例输入:5 8
示例输出:6 7
问题出在哪
- 循环的起始、结束值都是硬写死的,没有使用输入的两个数字,没法适配不同输入。
- 循环条件
i<=8包含了边界值8,起始的5也直接被加入数组,导致结果包含了不需要的边界数。 - 没考虑两个数字顺序颠倒的情况(比如输入
8 5)。
修正后的代码
// 获取输入(浏览器环境用prompt,Node环境可改用process.argv) const input = prompt("请输入两个空格分隔的数字:"); const [m, k] = input.split(" ").map(Number); const temp = []; // 统一处理数字顺序,避免输入颠倒的情况 const min = Math.min(m, k); const max = Math.max(m, k); // 从min+1开始循环,到max-1结束,完全避开边界 for(let i = min + 1; i < max; i++){ temp.push(i); } // 转换成空格分隔的字符串输出 console.log(temp.join(" "));
为什么这么改
- 用
Math.min和Math.max统一处理数字顺序,不管输入是5 8还是8 5,都能正确找到中间数。 - 循环起始设为
min+1,结束条件用i < max,确保只加入两个边界之间的数。 - 最后用
join(" ")把数组转成空格分隔的字符串,和示例输出格式一致。
测试输入5 8时,输出就是6 7,完全符合需求。
内容的提问来源于stack exchange,提问作者slystersanto
相关产品推荐
相关产品推荐

