嵌套for循环不能正常工作

时间:2013-03-14 16:06:12

标签: lua

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

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,我希望前两个条目插入到第三个表中,而不是最后两个。如何设置此代码以防止将来发生这种情况?感谢。

编辑:完成是在for循环之外创建的本地表。这段代码的意图是每次只找到表'hand'中的最低倍数,其中'hand'按数字从最低到最高排序。

1 个答案:

答案 0 :(得分:3)

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