You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:31:09