Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB输入框验证查询_Vb.net_Inputbox - Fatal编程技术网

Vb.net VB输入框验证查询

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

我知道InputBox不是验证的最佳工具,但这是我为课堂编写的程序的规范之一。我的问题是,尽管我用if或case语句验证输入的数据,但它仍然接受数据,同时显示代码中的MsgBox

基本上,我希望案例陈述所做的是正确过滤输入的数据,如果数据无效,则不进入下一层,并请求输入新数据。如果数据有效,进入下一层

    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:“不去下一层”会是什么样子?停止执行?要求用户输入当前楼层的新数据?把肯的法吉塔送货员带到我家?