2013-12-14 84 views
1
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沒有被聲明,所以無法進行評估,因爲它可能不可訪問保護級別「。循環錯誤vb.net

有人知道如何解決這個問題嗎?

謝謝

回答

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 
+0

實際上,我打算在lastSolution中跳過前四個數組,因爲我已經用其他值填充它了。我會嘗試第二個答案,我希望它能正常工作..謝謝你的好意。 – dipa

+0

@mano - 沒問題,隨時可以投票。 :-) –