找回密码
 加入
搜索
查看: 4096|回复: 4

[AU3基础] 两数组比较,找相同的元素[已解决]

[复制链接]
发表于 2013-7-18 23:04:11 | 显示全部楼层 |阅读模式
本帖最后由 ghxbs8900 于 2013-7-19 09:35 编辑

问题1,以下代码无法运行。
#include <Array.au3>
Local $a[5][2] = [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
$a[0][0] = UBound($a)
;~ _ArrayDisplay($a, 'Debug~~~')
Local $b[3] = ["aa", "bb", "cc"]

Local $i, $j
Local $Number = UBound($b)
For $i = 1 To $a[0][0]
        For $j = 1 To $Number
                If $b[$j] = $a[$i][1] Then
                        MsgBox(0, "test", "Good")
                EndIf
                $j += 1
        Next
        
Next
发表于 2013-7-19 00:20:59 | 显示全部楼层
你搞清什么叫数组了吗?
For $i=0 To UBound($b)-1
        For $j=0 To UBound($a)-1
                        If $b[$i]==$a[$j][0] Then MsgBox(0, '', $b[$i]&@CRLF&$a[$j][0]) 
        Next
Next

评分

参与人数 1金钱 +10 收起 理由
ghxbs8900 + 10 谢谢,非常谢谢。

查看全部评分

发表于 2013-7-19 00:28:22 | 显示全部楼层
ubound返回的是维度 而数组是0基的
#include <Array.au3>
Local $a[5][2] = [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
$a[0][0] = UBound($a)
;~ _ArrayDisplay($a, 'Debug~~~')
Local $b[3] = ["aa", "bb", "cc"]

Local $i, $j
Local $Number = UBound($b)
For $i = 0 To $a[0][0]-1
        For $j = 0 To $Number-1
                If $b[$j] = $a[$i][0] Then
                        MsgBox(0, "test", "Good")
                EndIf
;~                 $j += 1
        Next
        
Next

评分

参与人数 1金钱 +10 收起 理由
ghxbs8900 + 10 谢谢帮忙

查看全部评分

发表于 2013-7-19 01:06:50 | 显示全部楼层
本帖最后由 user3000 于 2013-7-19 01:09 编辑

回复 1# ghxbs8900

楼主切记, 引用数组元素,一定要确定其下标不要越界.
举实例:
$b[3] = ["aa", "bb", "cc"]
Ubound 其将得到总元素个数 3,
但其下标分别是: 0, 1, 2.
最大为2, 也就是 Ubound($b) -1; $b[2] 为 'cc';
没有 $b[3]  下标大于2就是越界了,会造成程序崩溃!

多维数组类似, 只要你记得把多维数组看作是数组的数组(即数组元素为数组)即可.
$a[5][2]  = [["aa", 1],["bb", 2],["cc", 3],["dd", 4]]
a 数组 有5个元素 Ubound($a) = 5;
它的每一个元素都是一个数组, 该数组又有2个元素.
具体可以这样理解:
数组a的第一个元素  $a[0] =   ["aa", 1] , 所以 $a[0][0] 是 'aa', $a[0][1] 为 1
那么回去看你的代码:
$a[0][0] = UBound($a) 是等于把数值 'aa'给抹掉了, 那么接下来的比对结果有可能是错的了!

评分

参与人数 1威望 +2 金钱 +20 贡献 +5 收起 理由
pusofalse + 2 + 20 + 5

查看全部评分

 楼主| 发表于 2013-7-19 09:31:51 | 显示全部楼层
谢谢各位深夜来肯出手答复小白的问题。非常感谢,谨记了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 01:30 , Processed in 0.100931 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表