好的,我正在制作一个计算器。你知道如何在计算器中点击加号,减号等按钮后,你可以输入一个新的数字。我试图用数组做这个。每次用户按下"输入"按钮,文本框中的数字将添加到数组中。然后将数组求和,得到数组中所有数字的总和。
由于用户可以输入任意数量的数字,我认为我必须使用动态数组。
有没有办法缩小数组,使长度是数组中的项数?
这是我如何声明我的数组:
Dim inputNumbers() As Double = New Double() {}
以下是我试图调整大小的方法。我试图计算数组中有多少项(保存在intItems
变量中。然后我尝试使用intItems
作为数组元素的数量重新声明数组。
Dim intItems As Integer
intItems = UBound(inputNumbers)
ReDim inputNumbers(intItems)
For i As Integer = 0 To inputNumbers.Length - 1
inputNumbers(i) = CDbl(inputTxt.Text)
Next i
这是我输入按钮的代码。由于会有一个数字,当按下此按钮时,数组应该以1个项目开头。所以它应该是inputNumbers(0)意味着它有1个项目。
该程序将当前输出数组的总和为0。运行调试器时,它跳过for循环,因为当它到达它时,for循环从For i as Integer = 0 to 0
开始,所以它不会运行。
所以现在,我不知道该怎么做。我试着让数组在开始时保持999项,但这会使输出显示错误的信息。
所以我的问题是如何制作它,以便将数组长度设置为其中的元素数。
提前谢谢。
答案 0 :(得分:1)
您必须使用管理其自身大小的List(Of Double)
来代替数组,而不必管理数组的大小:
Dim numbers As New List(Of Double)
然后,当按下 ENTER 时:
numbers.Add(inputText.Text) 'you may need a CDbl here
不相关,但无论您是使用数组还是列表,当您想要计算总和时,您可以使用LINQ:
Dim sum = numbers.Sum
如果由于某种原因必须使用数组,请注意您的代码永远不会增加数组的大小(请参阅this answer);你将你的数组ReDim
设置为数组的当前大小。
此外,您应该使用Redim Preserve
,这样您就不必将旧数组的内容复制到新数组中。
答案 1 :(得分:-1)
Redim Preserve inputNumbers(inputNumbers.GetUpperBound(0) + 1) 'Increase the capacity of the array by one
inputNumbers(inputNumbers.GetUpperBound(0)) = CDbl(inputTxt.Text)