Visual Basic 2D阵列问题

时间:2018-03-18 03:02:35

标签: arrays vb.net

我目前在尝试让我的程序使用2D数组时遇到一些麻烦。我之前使用一维阵列工作,但我现在完全迷失了,我必须做出这些改变。

以下是我目前拥有的2D数组和我认为可用于吐出字母等级的代码,但不会给我任何东西。谁能告诉我我做错了什么?

Private strGrades(,) As String = {{"900", "A"},
                                     {"815", "B"},
                                     {"750", "C"},
                                     {"700", "D"},
                                     {"0", "F"}}
 Dim strGradeSearch As String
    Dim intRow As Integer

    strGradeSearch = txtGrade.Text

    For intRow = 0 To 4
        If intRow > strGrades.GetUpperBound(0) Then
            strGrades(0, intRow) = strGradeSearch
            intRow += 1
        End If
    Next intRow

    If intRow <= strGrades.GetUpperBound(0) Then
        lblLetter.Text = strGrades(intRow, 0)
    End If

1 个答案:

答案 0 :(得分:0)

请将以下所有内容作为正面评论: - )

行。看着你的代码,有几个问题。您正在尝试将字符串视为数字。虽然字符串可以包含看起来像数字的字符串,但它只包含恰好是数字的字符串。它们有意义使用,但对于计算机来说,它们并非如此。 VB经常在后台尝试让生活更轻松,但说实话,这可能是一种痛苦。

在比较等级之类的东西时,您需要比较实际数字,而不是包含数字的字符串。您可能会得到意想不到的结果。您需要让计算机将字符串转换为数字。见下文。

你的循环实际上什么都不做,因为If语句永远不会执行它内部的代码,因为intRow永远不会大于数组的最后一个元素。无论如何......向前。

将字符串转换为数字的方法是使用Val函数,尽管这个&#34; old&#34; VB。目前的方法是使用Integer.Parse。有关它的一些基本信息,请查看this link

让我们一起走看你想做的事。

  1. 在文本框中获取字符串。

  2. 将字符串转换为数字。

  3. 循环遍历数组,并为每个元素获取存储为字符串的数字并将其转换为数字,然后将其与成绩编号进行比较。

  4. 如果等级大于任何值,请记下该等级 与成绩相关联的字母并停止搜索循环。

  5. 将找到的字母分配给标签。

  6. 以下代码应该执行此操作

        Dim strGrades(,) As String = {{"900", "A"},
                                         {"815", "B"},
                                         {"750", "C"},
                                         {"700", "D"},
                                         {"0", "F"}}
        Dim intGradeSearch As Integer
        Dim strGradeLetter As String = ""
        intGradeSearch = Integer.Parse(TxtGrade.Text)
    
        For i As Integer = 0 To 4
            If intGradeSearch >= Integer.Parse(strGrades(i, 0)) Then
                strGradeLetter = strGrades(i, 1)
                Exit For
            End If
        Next
    
        LblLetter.Text = strGradeLetter
    End Sub
    

    在循环结束后你不需要检查intRow,因为在这种情况下,在循环中的某个点,如果文本框中的数字大于或等于,则始终会找到成绩字母数组中的数字。

    如果您有任何疑问,请不要犹豫。