Arrays 气泡排序索引超出了数组的界限
你知道为什么吗?Arrays 气泡排序索引超出了数组的界限,arrays,vb.net,sorting,Arrays,Vb.net,Sorting,你知道为什么吗? 谢谢如果PatientCount是存储在Names中的项目数(您没有显示其中任何一个的定义),则名称的索引从0运行到PatientCount-1 因此,在上一次迭代中,当ComparisonNumber等于PatientCount-1时,您尝试访问索引PatientCount-1和PatientCount处的项,但第二个索引无效 If Names(ComparisonNumber) > Names(ComparisonNumber + 1) Then 因为您对高度和权重
谢谢如果
PatientCount
是存储在Names
中的项目数(您没有显示其中任何一个的定义),则名称的索引从0运行到PatientCount-1
因此,在上一次迭代中,当ComparisonNumber
等于PatientCount-1
时,您尝试访问索引PatientCount-1
和PatientCount
处的项,但第二个索引无效
If Names(ComparisonNumber) > Names(ComparisonNumber + 1) Then
因为您对高度
和权重
的排序方式与对名称
的排序方式不同,所以它们仍将保持原始顺序。当您决定执行交换时,您应该对所有这些对象执行相同的交换,或者您应该将对象存储在具有3个属性的单个(数组?)中—Name
,高度
和重量
,然后交换这些对象。那么我如何将高度和重量存储在同一个数组中?有没有办法将高度和重量存储在同一个数组中?@Marcel-您可以创建一个包含3个属性
-名称、高度和重量,使用当前存储在数组中的这些项的任何数据类型。然后将此类的对象存储在数组中。
If Names(ComparisonNumber) > Names(ComparisonNumber + 1) Then
Swapped = True
While Swapped = True
Swapped = False
ComparisonNumber = 0
While ComparisonNumber < PatientCount - 1 'Changed here
If Names(ComparisonNumber) > Names(ComparisonNumber + 1) Then
Temp = Names(ComparisonNumber)
Names(ComparisonNumber) = Names(ComparisonNumber + 1)
Names(ComparisonNumber + 1) = Temp
Swapped = True
End If
ComparisonNumber = ComparisonNumber + 1
End While
End While
For i = 0 To PatientCount - 1 'And here
lstPatientNames.Items.Add(Names(i))
lstPatientHeights.Items.Add(Heights(i))
lstPatientWeights.Items.Add(Weights(i))
Next
lstPatientHeights.Items.Add(Heights(i))
lstPatientWeights.Items.Add(Weights(i))