期望的输出没有到来(Visual Basic)

时间:2016-01-22 16:02:24

标签: vb.net

http://i.imgur.com/NRGcq3q.png

输出和我的代码,我稍微更新了代码,但它仍然显示相同的输出。

下面是整个代码,顺便说一句:http://pastebin.com/QRExvWpa

(如果你想知道程序是什么,我们必须检查用户ID的格式,第一个字母应该是大写,接下来的3应该是小写,然后接下来的3应该是数字,它的尚未完成)

1 个答案:

答案 0 :(得分:0)

首先,您的输入长度应为7而不是6: 第一个大写字母,3个较低的大写,最后是3个数字 因此,您的主“if”子句始终无法使用您的代码。

从你的代码:

  

如果Len(userID)= 6那么

以下是解决方案的示例。

我可以使用正则表达式以一种非常简单的方式解决这种情况(尝试自己阅读它!)或编写另一个函数来检查字符串是否为数字。

但我决定不提供你可能理解的简单解决方案。

我希望你能理解我的代码。

随意要求澄清。

Private Function checkUserID(ByVal userid As String) As Boolean

  Dim result As Boolean = False 'this is what the function returns
  Dim i As Integer 'this is a temporary variable for counting during the while-loop
  Dim t As Integer 'this is a temporary boolean flag to decide if should continue the while As Boolean

  userid = userid.Trim()

  If userid.Length = 7 Then

     If ((userid(0) >= "A") And (userid(0) <= "Z")) Then
        i = 1
        t = True

        While (t And (i <= 3))
           If ((userid(i) < "a") Or (userid(i) > "z")) Then
              t = False
           End If
           i = i + 1
        End While

        If t Then

           i = 4
           result = True
           'Since I know this is the last part, I used the final result flag and not the t flag
           'And in the end, the result value is the function value.

           While (result And (i <= 6))
              If ((userid(i) < "0") And (userid(i) > "9")) Then
                 result = False
              End If

              i = i + 1
           End While
        End If
     End If
  End If

  Return result

  End Function

使用方法:

  Dim x1 As String = "Abcd123"
  Dim x2 As String = "A123bcd"
  Dim b As Boolean

  b = checkUserID(x1)
  MsgBox(x1 & "=" + b.ToString)

  b = checkUserID(x2)
  MsgBox(x2 & "=" + b.ToString)