2013-10-23 35 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