如何在JavaScript中用Do loop配合switch case实现故障分类计数
故障分类统计功能代码修正方案
原有代码存在的问题
- 多余的
input.nextLine()语句:这是Java语法,浏览器JavaScript环境不存在input内置对象,会直接报错导致逻辑中断 - 循环条件逻辑完全颠倒:原有
while(data == "")表示仅当输入为空时继续循环,和需求「输入空值或0时终止」完全相反 - 缺少总故障数统计逻辑
- 未做大小写兼容,用户输入小写的
s/t/w无法触发计数 - 缺少异常场景判断,比如用户点prompt的取消按钮返回
null也应该终止循环
修正后可运行代码
<html> <head> <title>故障分类统计工具</title> </head> <body> <script type="text/javascript"> // 声明变量 const BR = "<br/>"; let day = prompt("Enter day: ", ""); let steering = 0, turbo = 0, wiper = 0; let data = ""; do { data = prompt("输入故障标识(S/T/W),输入空或0结束统计:", ""); // 统一转大写+去首尾空格,兼容用户不规范输入 const inputCode = data ? data.toUpperCase().trim() : data; switch(inputCode) { case 'S': steering++; break; case 'T': turbo++; break; case 'W': wiper++; break; // 其他非法输入不做处理 default: break; } // 仅当输入不为空、不为0、不为取消返回的null时继续循环 } while(data !== "" && data !== "0" && data !== null) // 计算总故障数 const total = steering + turbo + wiper; // 输出结果 document.write("统计日期: " + day + BR); document.write("转向系统(Steering)故障数: " + steering + BR); document.write("涡轮(Turbo)故障数: " + turbo + BR); document.write("雨刮(Wiper)故障数: " + wiper + BR); document.write("总故障数: " + total + BR); </script> </body> </html>
核心修改说明
- 删除了无效的
input.nextLine()语句,适配浏览器JS运行环境 - 调整循环条件为
data !== "" && data !== "0" && data !== null,满足输入空、0、点击取消按钮都终止统计的需求 - 新增输入内容大写转换、空格修剪逻辑,兼容用户不规范输入的场景
- 新增总故障数计算和输出逻辑
- 优化输出字段命名,可读性更高
内容的提问来源于stack exchange,提问作者PARAM DHILLON
相关产品推荐
相关产品推荐

