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值进行比较。我需要帮助。
答案 0 :(得分:5)
当您对阵列进行混洗时,您引用了tala[tmp]
而不是tmp
(第27行)。这就是造成这个错误的原因。
一些指示:
您正在使用全局变量。当全局碰撞时,这可能导致头痛(即tmp可以设置为某种东西,你用它做某事)。请参阅:Local Variables and Blocks
使用randomNumber()
会使您的代码变得模糊,因为randomNumber只是math.random(100)
的别名。
Lua从1
开始,而不是0
。你可以从0
开始,但这只是要记住的事情。 #table
不会计算索引0
。
在提问时,请提供完整的错误消息 - 这样我们就可以查看代码而无需自行运行:)
您可以在代码中添加print(x)
,这样您就可以了解正在发生的事情。这会帮助你找到错误,因为你知道发生了什么。