VB.NET输出数组显示System.Int32[]及冒泡排序代码问题求助
VB.NET问题解答
一、输出数组返回System.Int32[]的原因
- 你直接将数组变量传入输出方法(如
Console.WriteLine)时,默认调用的是数组基类Object的ToString()方法,该方法默认返回对象的类型名称而非内部元素,所以会得到System.Int32[]的输出结果。 - 解决方案:使用
String.Join()方法拼接数组所有元素后再输出,示例如下:
' 以逗号为分隔符拼接所有数组元素后输出 Console.WriteLine(String.Join(", ", arrayToSort))
二、冒泡排序代码存在的问题
你提供的排序代码存在两处明显错误:
- 变量名不匹配:内层循环声明的迭代变量是
valueWithinArray,但大小判断、交换逻辑里用的是未声明的arrayValue,会直接触发编译错误,需要把所有逻辑里的arrayValue替换为valueWithinArray。 - 外层循环边界错误:冒泡排序仅需要执行
数组长度-1次外层循环即可完成排序,你写的0 To arrayToSort.Length会多执行一次无效循环,还存在索引越界风险,正确边界应为0 To arrayToSort.Length - 2。
修正后的完整可运行代码
' 初始化待排序数组:存储9到2的所有整数 Dim arrayToSort(7) As Integer For i As Integer = 0 To 7 arrayToSort(i) = 9 - i Next ' 修正后的冒泡排序,内层循环优化为仅遍历未排序区间 For numberOfRunsCompleted As Integer = 0 To arrayToSort.Length - 2 For valueWithinArray As Integer = 0 To arrayToSort.Length - 2 - numberOfRunsCompleted If arrayToSort(valueWithinArray) > arrayToSort(valueWithinArray + 1) Then Dim tempStorage As Integer = arrayToSort(valueWithinArray) arrayToSort(valueWithinArray) = arrayToSort(valueWithinArray + 1) arrayToSort(valueWithinArray + 1) = tempStorage End If Next Next ' 输出排序后的数组 Console.WriteLine(String.Join(", ", arrayToSort))
内容的提问来源于stack exchange,提问作者Zeeshan Yahya
相关产品推荐
相关产品推荐

