2013-10-23 55 views
0

我想我理解循環和數組是如何工作的,但出於某種原因,當我嘗試將它們一起使用時,我得不到我的預期。基本上我想創建一個for循環來增加數組的索引,併爲數組中的每個元素分配從用戶輸入的數字。在C++中,它看起來像這樣:如何在數組中設置值

int array[11]; 

for(int i=0; i<12; i++) 
{ 
    array[i]=valueEntered; 
} 

現在我試圖在Visual Basic中重新創建它。這是我有:

Dim gasArray(11) As Decimal 

     For i As Integer = 0 To 11 Step 1 
      gasArray(i) = Val(priceTB.Text) 

      priceLB.Items.Add(Val(priceTB.Text)) 
      priceTB.Clear() 
     Next 

但是我的價格列表框(priceLB)打印出來時才進入第一號和0的陣列的其餘部分。任何幫助在這裏將不勝感激。

使用全局計數變量之外的子簡單修復。

Dim gasArray(11) As Decimal 

     gasArray(i) = Val(priceTB.Text) 
     i += 1 
     priceLB.Items.Add(Val(priceTB.Text)) 
     priceTB.Clear() 


     If i > 11 Then 
      enterBtn.Enabled = False 
      priceTB.Enabled = False 
     End If 

回答

3

你爲什麼叫priceTB.Clear()?我認爲這將清除文本框,因此數組的其餘部分變爲0.

+0

我需要清除文本框,以便您可以輸入下一個數字。 IE:元素2,3,4等 – SkyVar

+0

然後它不是正確的編碼方式,因爲在輸入下一個數字之前,循環將被執行12次。你爲什麼不把它放入Click事件(添加按鈕),不要使用循環,而是跟蹤要分配給變量數組的索引? – rcs

+0

不知道爲什麼我強迫自己使用for循環。也許缺乏睡眠。創建一個全局變量計數器來控制輸入的數字。謝謝您的幫助。 – SkyVar

0

在閱讀您的案例時,我瞭解到您需要在單個文本框中添加10個不同的數字。好吧,@ rcs表示priceTB.Clear()將在第一次迭代後清空文本框。

所以我建議你在你的情況下使用inputbox。它將幫助您在該循環的10次迭代中獲得10個不同的值。

Dim gasArray(9) As Decimal 

For i As Integer = 0 To gasArray.length - 1   
    gasArray(i) = Val(InputBox("Enter a value", "Hello", String.Empty)) 
    priceLB.Items.Add(gasArray(i)) 
Next