当我尝试自己排序时,我会在数字和零之间进行比较

时间:2014-07-31 10:07:20

标签: sorting lua numbers compare null

taula = {};

function randomNumber()
  return math.random(100);
end

function startArray()
    for x=0, 10 do
        taula[x]=randomNumber();
    end
end

function printArray()
    for i=0,#taula do
        print(taula[i]);
    end
end

function organizeArray()
   for i=0,#taula do
        for j=1,#taula do
            if taula[i]>taula[j] then
                tmp = taula[j];
                taula[j]=taula[i];
                taula[i]=taula[tmp];
            end
        end
    end
end

startArray()
organizeArray()
printArray()

这不起作用!最初的想法是打印声明为'taula'的表,但是在函数organizationalArray()中,if中存在一个问题,它表示当我声明了j和i变量时,我将数字与nil值进行比较。我需要帮助。

1 个答案:

答案 0 :(得分:5)

当您对阵列进行混洗时,您引用了tala[tmp]而不是tmp(第27行)。这就是造成这个错误的原因。

一些指示:

  • 您正在使用全局变量。当全局碰撞时,这可能导致头痛(即tmp可以设置为某种东西,你用它做某事)。请参阅:Local Variables and Blocks

  • 使用randomNumber()会使您的代码变得模糊,因为randomNumber只是math.random(100)的别名。

  • Lua从1开始,而不是0。你可以从0开始,但这只是要记住的事情。 #table不会计算索引0

  • 在提问时,请提供完整的错误消息 - 这样我们就可以查看代码而无需自行运行:)

  • 您可以在代码中添加print(x),这样您就可以了解正在发生的事情。这会帮助你找到错误,因为你知道发生了什么。