【问题标题】:Lua Others can run my code perfectly fine but I run into errors?Lua 其他人可以很好地运行我的代码,但我遇到了错误?
【发布时间】:2015-07-08 01:16:52
【问题描述】:

我有一个 Lua 脚本,我一直在尝试开始工作。这是我的第一个 Lua 脚本。我请其他人运行我的代码,它对他们来说非常好。但是,当我尝试在任何地方运行它时(我曾尝试在 Ideone.com、codepad.com、lExecutor、Garry's Mod 等中运行),我会收到相同的错误消息。错误消息是“尝试将 nil 与数字进行比较”,它在第 4 行。如果有帮助,我的操作系统是 windows 7。我的代码在下面,我要求你们测试它是否有效。如果可能的话,如果它有效,还请说明你用来运行它的东西。基本上它的意思是会出现一个输入框,用户必须输入他们的年龄。如果年龄超过或低于 12 岁,它会说你太老/太年轻,如果年龄是 12 岁,它会说“欢迎,儿子!”。

io.write ("Enter your age:")
age = io.read()
age = tonumber(age)
if age < 12 then
  print ("O noes, you are too young!")
elseif age > 12 then
  print ("O noes, you are too old!")
else
  print ("Welcome, son!")
end

【问题讨论】:

  • Attempt to compare nil with number 表示在该行上您的变量是 nil 而不是数字。当读取的值不能转换为数字时,就会发生这种情况。因此,例如,如果您在提示符处输入foo。如果你输入一个数字,它应该可以工作。
  • "当我尝试在任何地方运行它" 您应该首先尝试的是命令行中的standard Lua interpreter

标签: variables printing io lua garrys-mod


【解决方案1】:

代码本身很好。问题是,如果你在 Ideone 这样的网站上试用,你必须明确提供输入,否则age 没有输入,所以它的值为nil,导致错误。

Demo on Ideone,注意 stdin 部分。

【讨论】:

    【解决方案2】:

    io.read() 从标准输入读取,因此如果您在命令行上运行脚本,它将起作用。就是这样,它无法打开输入框。在您尝试运行代码的那种环境中,没有标准输入,因此年龄永远不会分配给任何东西,并且您会收到错误。

    【讨论】:

    • 啊啊啊。我现在明白了。谢谢大家的帮助:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 2022-07-06
    • 1970-01-01
    • 2021-10-13
    • 2020-02-22
    • 2022-11-11
    相关资源
    最近更新 更多