VB.Net代码如何输出错误提示?附待完善的预发布任务代码
预发布任务代码实现协助
需要完成预发布任务开发,任务相关参考截图可查看对应任务附件。
当前已提交代码
Sub Main() Dim Day(13) As Date Dim licenceNumber(19) As String Dim carPark(19) As Integer Dim name As String Dim i As Integer For i = 0 To 19 Console.WriteLine("Please enter name") name = Console.ReadLine Console.WriteLine("Enter number plate") i = i + 1 licenceNumber(19) = Console.ReadLine Console.WriteLine("Please enter a day from 1 to 14 inclusive. 1 being the earliest date and 14 being the latest date") i = i + 1 If Console.ReadLine > 14 Then Console.WriteLine("Your date is out of range") End If Next i i = i + 1 End Sub
待解决问题
- 提示用户选择1-14范围内的日期编号后,后续逻辑未完成
- 需要实现非法输入时弹出错误提示的效果,不清楚具体实现方式
修复&实现方案
你现有代码存在几个基础逻辑错误,先修正再实现输入校验:
- 禁止在
For循环内部手动修改循环变量i,For循环会自动完成变量迭代,手动执行i = i + 1会导致索引跳变、数组越界 - 存储车牌、日期数据时不要写死数组下标为19,数据要存入当前循环索引对应的数组位置
- 读取用户输入的日期时,不能直接拿输入的字符串和数字比较,要先校验输入内容是否为合法整数,再判断数值范围
- 非法输入不能只打印一次错误就进入下一轮循环,要循环提示用户重新输入,直到拿到合法值为止
修正后的完整可运行代码如下:
Sub Main() ' VB数组默认从0开始计数,Day(13)共14个元素,刚好对应1-14的日期范围 Dim days(13) As Date ' 共20条预约记录,数组索引范围0-19 Dim licenceNumber(19) As String Dim carPark(19) As Integer Dim userName As String Dim selectDay As Integer Dim i As Integer ' 初始化14天的日期,此处以当前日期作为第1天,可根据业务实际需求调整起始日期 For d = 0 To 13 days(d) = Date.Today.AddDays(d) Next For i = 0 To 19 Console.WriteLine("Please enter name") userName = Console.ReadLine().Trim() Console.WriteLine("Enter number plate") licenceNumber(i) = Console.ReadLine().Trim() ' 日期输入校验循环:输入不合法则持续提示重输 Do Console.WriteLine("Please enter a day from 1 to 14 inclusive. 1 being the earliest date and 14 being the latest date") Dim inputContent = Console.ReadLine().Trim() ' 校验输入是否为合法整数 If Not Integer.TryParse(inputContent, selectDay) Then Console.WriteLine("Invalid input, please enter a valid number between 1 and 14") Continue Do End If ' 校验输入数值是否在指定范围内 If selectDay < 1 Or selectDay > 14 Then Console.WriteLine("Your date is out of range, please enter a number between 1 and 14") Continue Do End If ' 输入合法,存入对应数组后退出校验循环 carPark(i) = selectDay Exit Do Loop Next i ' 后续业务逻辑(如按日期统计停车数量、输出预约明细等)可在此处继续编写 End Sub
核心校验逻辑说明
- 用
Integer.TryParse做类型校验,避免用户输入字母、特殊符号时程序直接崩溃 - 用
Do...Loop循环包裹日期输入流程,只要输入不符合规则就打印对应错误提示,重新接收输入,直到拿到合法值才进入下一条记录的录入 - 所有用户输入统一调用
.Trim()去除首尾多余空格,避免用户误输入空格导致校验不通过
内容的提问来源于stack exchange,提问作者Leith Quinn
相关产品推荐
相关产品推荐

