【问题标题】:Why doesn't my code compare the first and last number?为什么我的代码不比较第一个和最后一个数字?
【发布时间】:2021-05-26 18:56:45
【问题描述】:

我必须比较脚本中最多 5 个数字。这也很有效。但是,我的第一个和最后一个数字没有比较。我的代码有什么问题?

local loaded = game.Workspace.TrommelValue.Value
local randomkugel =  {}
    
for i = 0,loaded-1 do  
    randomkugel[i] = math.random(1,6) 
    for index = 0, i+1 do 
        if i ~= index then
            if randomkugel[i]==randomkugel[index] then
                randomkugel[i]=math.random(1,6)
                index = 0
            end
        end
    end
end

谢谢你帮助我!

【问题讨论】:

  • “没有比较”是什么意思?您甚至想用该代码实现什么目标?

标签: arrays lua


【解决方案1】:

我不知道 game.Workspace.trommelValue.value 是什么,但我们假设它是一个正数。

第一次迭代

-- assign a random integer from [1-6] to `randomkugel[0]`
randomkugel[0] = math.random(1,6)

现在您第一次运行内部循环。第一个循环被跳过为i == index。 跳过第二个循环,因为randomkugel[i] 是随机数,randomkugel[index] 是nil

外循环的第二次迭代。 i 为 1,random[1] 被分配一个来自 [1-6] 的随机值。

内循环: 第一次运行i 是1,index 是0,所以输入了第一个 if 语句。 randomkugel[1] 可能随机等于 randomkugel[0]。在这种情况下,您将为randomkugel[1] 分配一个新的随机值并将index 设置为0,这没有任何效果。 如果两个值不相等,则不会发生任何事情。 内循环的第二个循环,i 仍然是1,index 是2。 因为没有randomkugel[2],所以这个循环什么也不做。

每次与nil 进行比较时,您总是会跳过内循环的最后一个循环。 所以你的内循环是有效的

for index = 0, i do
  if i ~= index then
    if randomkugel[i]==randomkugel[index] then
      randomkugel[i]=math.random(1,6)
    end
  end
end

我猜你最大的误解是你可以以某种方式重置循环体内的循环计数变量索引。 对 index 的任何更改仅在当前迭代中的更改之后才有效。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2010-12-22
    相关资源
    最近更新 更多