循环vb.net时出错

时间:2013-12-14 01:57:10

标签: vb.net for-loop

    clustMember(0, 0) = "1,2,3,4,"
    clustMember(0, 1) = Nothing
    clustMember(0, 2) = "5,6,7,8,9,"
    clustMember(0, 3) = Nothing
    clustMember(1, 0) = "1,2,3,4,"
    clustMember(1, 1) = "5,6,7,8,9,"
    clustMember(1, 2) = Nothing
    clustMember(1, 3) = Nothing
    clustMember(2, 0) = "1,2,3,4,6,9,"
    clustMember(2, 1) = "5,7,8,"
    clustMember(2, 2) = Nothing
    clustMember(2, 3) = Nothing
    clustMember(3, 0) = Nothing
    clustMember(3, 1) = "1,2,3,4,5,6,8,"
    clustMember(3, 2) = "7,9,"
    clustMember(3, 3) = Nothing

    pmax = 3
    xini = 3

    For i As Integer = 1 To pmax - 1
        For j As Integer = 0 To xini - 1
            If clustMember(i, j) <> Nothing Then
                lastSolution(i, j) = clustMember(i - 1, j)
            End If
        Next
    Next

尝试将数据从clustMemBer传递到lastSolution时遇到问题。当j的值为0和1时工作正常。但是当j的值为2时,值为clustMember无法移动到lastSolution。当我跟踪代码时,我发现当j的值为2时,就会出现这样的警告“这个表达式的值可能不正确。由于没有声明j,因此无法对其进行评估。由于它可能无法访问保护等级。“

有谁知道如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:1)

你的第一个问题是你在i = 1而不是i = 0开始外循环,因此你正在跳过If clustMember(i, j) <> Nothing Then前四项的条件:

clustMember(0, 0) = "1,2,3,4,"
clustMember(0, 1) = Nothing
clustMember(0, 2) = "5,6,7,8,9,"
clustMember(0, 3) = Nothing

其次,如果您不在第一项上,则只能移回一项,因此请检查这是否是第一次通过外部循环将代码更改为:

For i As Integer = 0 To pmax - 1
    For j As Integer = 0 To xini - 1
        If clustMember(i, j) <> Nothing Then
            If i > 0 Then
                lastSolution(i, j) = clustMember(i - 1, j)
            Else
                lastSolution(i, j) = clustMember(i, j)
            End If
        End If
    Next
Next