Vb.net VB输入框验证查询
我知道InputBox不是验证的最佳工具,但这是我为课堂编写的程序的规范之一。我的问题是,尽管我用if或case语句验证输入的数据,但它仍然接受数据,同时显示代码中的MsgBox 基本上,我希望案例陈述所做的是正确过滤输入的数据,如果数据无效,则不进入下一层,并请求输入新数据。如果数据有效,进入下一层Vb.net VB输入框验证查询,vb.net,inputbox,Vb.net,Inputbox,我知道InputBox不是验证的最佳工具,但这是我为课堂编写的程序的规范之一。我的问题是,尽管我用if或case语句验证输入的数据,但它仍然接受数据,同时显示代码中的MsgBox 基本上,我希望案例陈述所做的是正确过滤输入的数据,如果数据无效,则不进入下一层,并请求输入新数据。如果数据有效,进入下一层 Const ROOMS As Integer = 30 Const MAX_FLOOR As Integer = 16 Dim floor As Integer D
Const ROOMS As Integer = 30
Const MAX_FLOOR As Integer = 16
Dim floor As Integer
Dim StrOccupancy As String
Dim occupancy As Integer
Dim occupancyRate As Double
Dim occupancySum As Integer
Dim overallRate As Double
lblOccupancyRate.Text = String.Empty
lblRoomsOccupied.Text = String.Empty
output.Items.Clear()
For floor = 1 To MAX_FLOOR
If floor = 13 Then
Continue For
End If
StrOccupancy = Integer.TryParse(InputBox("Enter the number of rooms occupied for floor:" & Space(1) & floor), occupancy)
Select Case occupancy
Case < 1
MsgBox("Please enter a number of 1 or more occupants.")
Case > 30
MsgBox("Amount of occupants must be between 1-30.")
Case >= 1 And occupancy <= 30
occupancyRate = (occupancy / ROOMS)
occupancySum += occupancy
overallRate = occupancySum / (ROOMS * 15)
End Select
output.Items.Add("Floor: " & floor & " Rooms Occupied: " & occupancy _
& " Occupancy Rate: " & occupancyRate.ToString("P2"))
lblRoomsOccupied.Text = occupancySum.ToString
lblOccupancyRate.Text = overallRate.ToString("P2")
Next
output.Items.Add("")
output.Items.Add("Total occupancy is" & Space(1) & occupancySum & Space(1) & "and" & Space(1) & overallRate.ToString("P2") & Space(1) & " of rooms are full.")
End Sub
Const ROOMS作为整数=30
Const MAX_FLOOR作为整数=16
将地板调暗为整数
暗频闪如弦
将占用率设置为整数
暗淡的职业是双重的
作为整数的Dim COCUNCYSUM
整体增长率为双倍
lblOccupancyRate.Text=String.Empty
lblRoomsOccessed.Text=String.Empty
output.Items.Clear()
对于楼层=1至最大楼层
如果楼层=13,则
继续
如果结束
StrOccupancy=Integer.TryParse(输入框(“输入楼层:”&空间(1)&楼层)占用的房间数),占用率)
选择案例占用率
病例<1
MsgBox(“请输入一个或多个居住者的数字。”)
案例>30
MsgBox(“乘客数量必须在1-30之间”)
Case>=1且占用有一点时间检查代码,实际上您需要一个布尔值来验证是否满足占用要求,如果不满足,则循环。代码如下所示:
For floor = 1 To MAX_FLOOR
'Boolean to validate the occupancy meet the requirements
Dim goodOccupancy As Boolean = False
'Do loop enters at least 1 time and runs the code inside it
Do
Integer.TryParse(InputBox("Enter the number of rooms occupied for floor:" & Space(1) & floor), occupancy)
Select Case occupancy
Case < 1
MsgBox("Please enter a number of 1 or more occupants.")
Case > 30
MsgBox("Amount of occupants must be between 1-30.")
Case >= 1 And occupancy <= 30
occupancyRate = (occupancy / ROOMS)
occupancySum += occupancy
overallRate = occupancySum / (ROOMS * 15)
'If the requirements are met we change the Boolean value to continue with the execution
goodOccupancy = True
End Select
'We loop if the requirements are not met
Loop Until goodOccupancy = True
output.Items.Add("Floor: " & floor & " Rooms Occupied: " & occupancy _
& " Occupancy Rate: " & occupancyRate.ToString("P2"))
lblRoomsOccupied.Text = occupancySum.ToString
lblOccupancyRate.Text = overallRate.ToString("P2")
Next
楼层=1至最大楼层的
'布尔值,以验证占用率是否满足要求
以布尔值表示的值=False
'Do循环至少输入1次并运行其中的代码
做
整数.TryParse(输入框(“输入楼层占用的房间数:”&空间(1)&楼层),占用率)
选择案例占用率
病例<1
MsgBox(“请输入一个或多个居住者的数字。”)
案例>30
MsgBox(“乘客数量必须在1-30之间”)
Case>=1和“我应该添加或更改什么才能使其正常工作?”--您还没有定义“正常工作”的含义。因此,如果由我决定,我会加一杯朗姆酒和几杯法吉塔酒。你的问题是你的“选择案例”使用了错误的变量。它应该是StrOccupancy
而不是occulation
好吧,我希望它能正确过滤输入的数据,如果根据我的案例陈述数据无效,就不要进入下一层。。不过,酒精和一些不错的法吉塔现在听起来确实不错。@3VT这不是问题所在。我使用TryParse方法将数据转换为一个占用率可变的整数。任何一个都会给我留下同样的问题。@Gonzo:“不去下一层”会是什么样子?停止执行?要求用户输入当前楼层的新数据?把肯的法吉塔送货员带到我家?