循环 vb.net 时出错


    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。由于其保护级别,可能无法访问。

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

谢谢

您的第一个问题是您在 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

最新更新