【问题标题】:1D Array into 2D array (vb)一维数组转换为二维数组 (vb)
【发布时间】:2015-09-03 20:11:19
【问题描述】:

我已拆分一维数组,我需要将其转换为二维数组。该数组由数字(分数)和名称组成,作为数值测试的结果。

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()

这是我当前的代码,我需要添加什么? 感谢您的帮助。

【问题讨论】:

  • 您到底想要达到什么目的。你想把一维转换成二维吗?是NxN矩阵等吗?请具体。
  • 我在编程方面不是很先进,我的 1d 数组在单元格 1 中有名称,然后在单元格 2 中得分,依此类推,我试图将其放入二维数组中,因此得分在名称下如果你知道我的意思的数组

标签: arrays multidimensional-array


【解决方案1】:

当您存在连续的键/值以使其作为数组的索引时,可以将 1D 转换为 2D,但在您的情况下两者都不是。所以更好的选择是一般使用 HashMap/HashTable。根据您的要求,而不是使用二维数组来表示 name: value 对,您应该使用 HashMap

根据您在 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);

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

例如要获得 "mat" 得分,只需写 hm.get("mat")

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

【讨论】:

    【解决方案2】:
        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
    

    这将使用一维数组中的值创建一个二维数组。

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 2018-02-19
      • 2020-03-26
      • 2021-11-23
      • 2021-07-20
      • 2021-11-21
      相关资源
      最近更新 更多