Sorting 当我自己尝试对一个表进行排序时,我一直在比较number和nil

Sorting 当我自己尝试对一个表进行排序时,我一直在比较number和nil,sorting,lua,numbers,compare,null,Sorting,Lua,Numbers,Compare,Null,这不管用!最初的想法是打印声明为“taula”的表,但在函数organizeArray()中,if有一个问题,它说当我声明了j和I变量时,我将一个数字与一个nil值进行比较。我需要帮助。当你在洗牌数组时,你引用的是tala[tmp],而不是tmp(在第27行)。这就是导致错误的原因 几点建议: 你什么都用globals。这可能会在以后全局碰撞时引起头痛(即tmp可能被设置为某个值,您可以使用它做一些事情)。见: 使用randomNumber()会使代码有点模糊,因为randomNumber只是

这不管用!最初的想法是打印声明为“taula”的表,但在函数organizeArray()中,if有一个问题,它说当我声明了j和I变量时,我将一个数字与一个nil值进行比较。我需要帮助。

当你在洗牌数组时,你引用的是
tala[tmp]
,而不是
tmp
(在第27行)。这就是导致错误的原因

几点建议:

  • 你什么都用globals。这可能会在以后全局碰撞时引起头痛(即tmp可能被设置为某个值,您可以使用它做一些事情)。见:

  • 使用
    randomNumber()
    会使代码有点模糊,因为randomNumber只是
    math.random(100)
    的别名

  • Lua从
    1
    开始,而不是
    0
    。您可以从
    0
    开始,但这只是需要记住的一点<代码>#表将不计算索引
    0

  • 当提出问题时,请给出完整的错误消息——这样我们就可以查看代码,而无需自己运行:)

  • 您可以在代码中放入
    print(x)
    ,以便查看发生了什么。这会帮你找到虫子,因为你知道发生了什么


很抱歉,我花了这么长时间才回答。非常感谢你的帮助!我已经提高了我的编码技能很多,实际上这段代码现在看起来非常笨重。再次感谢您抽出时间回答:)
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()