如何修复读取数字至0并找出最大最小值的JavaScript脚本?
修复连续输入数字并求最值的JavaScript脚本
原需求:连续读取数值直到输入0为止,找出输入数字中的最大值与最小值。原脚本存在多处问题,下面是修复方案:
原脚本的问题点
- prompt弹窗里的字符串直接换行,JavaScript语法不允许,会直接报错
- 输入的0会被存入数组,可能干扰最值计算
- 完全缺失最小值的计算逻辑
- for循环遍历范围错误,没覆盖所有有效数字
document.write()没有传入任何内容,无法输出结果- 未处理用户输入非数字的情况,比如输入字母会得到NaN,影响后续计算
修复后的完整代码
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Znajdź max i min</title> </head> <body> <script> let tab = [], input, max, min; // 循环读取输入,直到输入0 do { input = parseInt(prompt("Podaj jakąś wartość. Zero kończy wprowadzanie danych:")); // 只把有效数字(非NaN、非0)加入数组 if (!isNaN(input) && input !== 0) { tab.push(input); } } while (input !== 0); // 检查是否有有效输入 if (tab.length === 0) { document.write("Nie podano żadnych wartości poza zerem!"); } else { // 初始化max和min为第一个有效数字 max = tab[0]; min = tab[0]; // 遍历数组找最值 for (let num of tab) { if (num > max) max = num; if (num < min) min = num; } // 输出结果 document.write(`Największa wartość: ${max}<br>Najmniejsza wartość: ${min}`); } </script> </body> </html>
关键修复说明
- 修正prompt字符串的换行问题,保持语法合规
- 新增输入验证:用
isNaN()判断输入是否为有效数字,同时排除0,只把有效数值加入数组 - 用
for...of循环遍历数组,同时补充最小值的判断逻辑 - 增加无有效输入的判断,避免数组为空时出现错误
- 完善
document.write()的内容,清晰输出最大值和最小值
内容的提问来源于stack exchange,提问作者Loyydowski
相关产品推荐
相关产品推荐

