【问题标题】:Compare conflicting values in two arrays - Visual Basic比较两个数组中的冲突值 - Visual Basic
【发布时间】:2014-12-22 04:14:29
【问题描述】:

在 Visual Basic 中,我有一个从 1 到 100 的数组。然后我有一个输入框,您可以在其中输入数字(例如:1 5 6 9 10 20 等),应用程序在空格和输入之间拆分数字它们作为新数组中的项目。如何获取 1 到 100 数组中的 VALUES 和输入数组中的 VALUES 并进行比较,如果它们发生冲突(例如,输入是否与 1 到 100 相同)然后做点什么?

1到100数组的代码:

Dim baseArray(0 To 100) As Integer  
For a = 0 To UBound(baseArray)
    no += 1
    baseArray(a) = 0 + no
Next a

分割输入数组的代码:

Dim givenNoArray() As String  
givenNo = input_numbers.Text
givenNoArray = givenNo.Split(" ")

For i = 0 To UBound(givenNoArray)
    Debug.Print(givenNoArray(i))
Next i

所以一切正常。只是比较它们是我的问题。

【问题讨论】:

  • 要比较具有相同索引值的元素,您只需要一个循环并使用 If 语句查看 baseArray(index) 与 givenNoArray(index)。如果要将 givenNoArray 中的每个元素与 baseArray 中的每个元素进行比较,则需要两个循环 - 一个称为嵌套循环,因为它存在于另一个循环中。外层循环遍历 givenNoArray 中的每个元素,内层循环遍历 baseArray 中的每个元素。然后在 if 语句中查看 givenNoArray(outer_index) 与 baseArray(inner_index)
  • 所以 Do While 循环可以工作吗?
  • 看起来你将在两个数组中都有所有有效数据,所以 For 循环遍历每个条目似乎是最好的。
  • 好吧,我试试。但是我究竟如何得到数组中位置的值而不是数组位置号呢?

标签: arrays vba compare


【解决方案1】:
For i = 0 To UBound(givenNoArray)
    For j = 0 To UBound(baseArray)
        If givenNoArray(i) = baseArray(j) Then
            Console.WriteLine("match of givenNoArray element " &
                              i & " and baseArray element  " & j)
            Console.WriteLine("value of match is " & givenNoArray(i))
        End If
    Next j
Next i

【讨论】:

  • 确实有效,但是当我尝试将它放到一个文本(每个数组项)上时,它只列出与之冲突的那些,所以如果 2 个数字发生冲突而不是列出 1 到 100 并说那 2 个冲突它列出了 2 个数字。我该如何解决?
  • 我不明白“把它放到文本上”是什么意思。
  • 而不是像您所做的那样将其放入控制台调试中。我已经把它放在标签文本上。每次它循环通过它在屏幕上绘制一个标签在彼此下方。我已经做到了,这样冲突的颜色就不同了。看这里:pastie.org/private/hr9opuqqxsrqehvtlrmga 但它并没有正确地绘制它们。
  • @fire_head 不幸的是我不懂 Visual Basic。我会问另一个问题,这次是关于如何根据需要将输出转到文本标签。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2023-03-26
  • 1970-01-01
  • 2019-08-01
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多