嵌套的for循环不像应该的那样工作。

我有一段比较两个表项的代码,并将具有相同值的条目放入第三个表:

for i = 1, #hand do
    for j = i+1, #hand do
        if( hand[i].number == hand[j].number ) then
            if not done[i] then
                done[i] = true;
                table.insert(cards, hand[i]);
            end
            if not done[j] then
                done[j] = true;
                table.insert(cards, hand[j]);
            end
        end
    end
end

我遇到的问题是它将至少添加一个不相同的条目。我检查了打印内容,发现至少有一次添加的额外条目是单独的多重。也就是说,如果要检查的值为6,6,10,10,则预期将前两个条目插入第三个表中,而不是最后两个条目。如何设置此代码,以防止在以后发生这种情况?谢谢。

编辑:done是在for循环外创建的本地表。此代码的目的是每次找到仅表“hand”中最低的倍数,其中“hand”按数字从低到高排序。

点赞
用户1847592
用户1847592
对于i等于1到hand数组长度之间的每个值:
如果hand[i]的数字等于hand[i+1]的数字,那么:
令j等于i
当hand[i]的数字等于hand[j]的数字时执行以下循环:
如果done[j]为假,则将它置为真,并且将hand[j]插入到cards数组中。
令j等于j+1
结束循环
结束过程
2013-03-14 16:29:00