两数组比较,找相同的元素[已解决]
本帖最后由 ghxbs8900 于 2013-7-19 09:35 编辑问题1,以下代码无法运行。#include <Array.au3>
Local $a = [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
$a = UBound($a)
;~ _ArrayDisplay($a, 'Debug~~~')
Local $b = ["aa", "bb", "cc"]
Local $i, $j
Local $Number = UBound($b)
For $i = 1 To $a
For $j = 1 To $Number
If $b[$j] = $a[$i] Then
MsgBox(0, "test", "Good")
EndIf
$j += 1
Next
Next
你搞清什么叫数组了吗?For $i=0 To UBound($b)-1
For $j=0 To UBound($a)-1
If $b[$i]==$a[$j] Then MsgBox(0, '', $b[$i]&@CRLF&$a[$j])
Next
Next
ubound返回的是维度 而数组是0基的#include <Array.au3>
Local $a = [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
$a = UBound($a)
;~ _ArrayDisplay($a, 'Debug~~~')
Local $b = ["aa", "bb", "cc"]
Local $i, $j
Local $Number = UBound($b)
For $i = 0 To $a-1
For $j = 0 To $Number-1
If $b[$j] = $a[$i] Then
MsgBox(0, "test", "Good")
EndIf
;~ $j += 1
Next
Next 本帖最后由 user3000 于 2013-7-19 01:09 编辑
回复 1# ghxbs8900
楼主切记, 引用数组元素,一定要确定其下标不要越界.
举实例:
$b = ["aa", "bb", "cc"]
Ubound 其将得到总元素个数 3,
但其下标分别是: 0, 1, 2.
最大为2, 也就是 Ubound($b) -1; $b 为 'cc';
没有 $b下标大于2就是越界了,会造成程序崩溃!
多维数组类似, 只要你记得把多维数组看作是数组的数组(即数组元素为数组)即可.
$a= [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
a 数组 有5个元素 Ubound($a) = 5;
它的每一个元素都是一个数组, 该数组又有2个元素.
具体可以这样理解:
数组a的第一个元素$a = ["aa", 1] , 所以 $a 是 'aa', $a 为 1
那么回去看你的代码:
$a = UBound($a) 是等于把数值 'aa'给抹掉了, 那么接下来的比对结果有可能是错的了! 谢谢各位深夜来肯出手答复小白的问题。非常感谢,谨记了。
页:
[1]