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

Visual Basic 2019如何实现车辆类型输入的循环验证?

问题分析与修正方案

原代码的核心错误

  • 常量命名非法:zero emission包含空格,VB中变量/常量名不能有空格,应改为zeroemission
  • 常量定义语法错误:Const electric as single 32.0缺少赋值符号=,正确写法是Const electric As Single = 32.0
  • 循环逻辑颠倒:原代码先执行错误提示再判断,且判断条件逻辑完全错误,应该先检查输入是否有效,无效则重新输入
  • 变量名拼写错误:vehicle type应为vehicle_type(VB中变量名不能有空格)
  • 字符串比较错误:直接用vehicle_type <> lowemission是拿字符串和数值常量对比,逻辑完全不匹配,应该判断输入的字符串是否属于指定的三个有效类型

修正后的完整代码

Dim vehicle_type As String
Dim days_required As Integer
Dim insurance_cover As String
Dim new_existing As String
Dim B_S_G As String
Dim total_hire_cost As Single

' 修正常量定义,命名和语法合规,后缀区分价格与类型字符串
Const lowemission_rate As Single = 15.5
Const zeroemission_rate As Single = 20.0
Const electric_rate As Single = 32.0

' 循环获取有效输入
Do
    vehicle_type = InputBox("请输入车辆类型:lowemission、zeroemission 或 electric")
    ' 判断输入是否无效,无效则提示
    If Not (vehicle_type.Equals("lowemission", StringComparison.OrdinalIgnoreCase) OrElse _
           vehicle_type.Equals("zeroemission", StringComparison.OrdinalIgnoreCase) OrElse _
           vehicle_type.Equals("electric", StringComparison.OrdinalIgnoreCase)) Then
        MsgBox("invalid vehicle type")
    End If
Loop Until vehicle_type.Equals("lowemission", StringComparison.OrdinalIgnoreCase) OrElse _
           vehicle_type.Equals("zeroemission", StringComparison.OrdinalIgnoreCase) OrElse _
           vehicle_type.Equals("electric", StringComparison.OrdinalIgnoreCase)

' 后续业务逻辑可在此继续编写

关键说明

  • 用StringComparison.OrdinalIgnoreCase实现大小写不敏感判断,用户输入LowEmission这类变体也能被识别(若需要严格匹配大小写,可去掉该参数,直接用vehicle_type = "lowemission")
  • 循环逻辑调整为:先弹出输入框,检查有效性,无效则提示,直到输入符合要求才退出循环
  • 常量名添加_rate后缀,避免和输入的类型字符串重名导致逻辑混淆

内容的提问来源于stack exchange,提问作者Codingnoob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:16:13