1D阵列到2D阵列(vb)

时间:2015-06-18 09:10:16

标签: arrays multidimensional-array

我已经拆分了1d数组,我需要将其转换为2d数组。该数组由数字(分数)和名称组成,作为数值测试的结果。

Dim results1 As String = File.ReadAllText("Z:\scores class 1.txt")

Dim array = Split(results1, " ")

For i As Integer = 0 To array.Length - 1
   Console.WriteLine(array(i))
Next

Console.WriteLine("Would you like these to be sorted? Press 1 for yes, 2 for no")

If Console.ReadLine = 1 Then
   ' do some stuff
ElseIf Console.ReadLine = 2 Then
   ' do some stuff
End If

Console.ReadLine()

这是我目前的代码,我需要添加什么? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

当你有一个有条件的键/值使它成为数组的索引时,可以将1D转换为2D,但在你的情况下它不是。因此,更好的选择是使用HashMap / HashTable。根据您的要求,您应该使用HashMap

,而不是使用2D数组来表示名称:值对

根据您在commnets中的语句,您有一个包含name:value的一维数组 即

String arr [] = { "jack", "23", "mat","45", "mike","56" }

您可以更好地将其表示为HashMap

HashMap<String,Integer> hm = new HashMap<String,Integer>();

hm.add("jack",23);       // it will add score of 23 to name jack i.e "jack" : 23
hm.add("mat",45);
hm.add("mike",56);

现在您可以轻松操作任何名称:值对

e.g。要获得“mat”得分,请写下 hm.get("mat")

它将输出与mat相关的标记,即 45。

答案 1 :(得分:0)

    Dim array2((array.Length / 2) - 1, 1) As String
    For i As Integer = 0 To (array.Length - 1) / 2 Step 1
        array2(i, 0) = array(i * 2)
        array2(i, 1) = array((i + 1) * 2 - 1)
    Next

这将创建一个二维数组,其中包含1d数组的值。