这些截图中,then附近的意外符号是什么?

我正在使用一个 Android Lua IDE 程序,但我似乎找不到为什么在第27行上它会给我“unexpected symbol near then”的错误。请帮忙,非常感谢[1]: https://i.stack.imgur.com/lcIsM.png

原文链接 https://stackoverflow.com/questions/70408638

点赞
stackoverflow用户984823
stackoverflow用户984823

在 Lua 参考中查看(我不懂这种语言):

if ...
    then
    do
        bal = subtract(bal, 1000)
        print("You lost")
    end
elseif ...
    then
        bal = add(bal, 2000)
        print("You won")
    do
    end
end

(缩进可能完全错误。)

2021-12-19 03:08:06
stackoverflow用户2858170
stackoverflow用户2858170

根据你的截图:

如果v等于6或7或8或9或10
那么bal = 减去(bal,1000)
     然后print("你输掉了赌局!你的新余额为", bal")
如果v 等于1或2或3或4或5
那么bal = 增加(bal,2000)
     然后print("你赢了赌局!你的新余额为", bal)
end

问题1:每个数字都是一个真值,因此无论v的值如何,v == 6 or 7 or 8 or 9 or 10总是会解析为true。

你需要编写 v == 6或v == 7或v == 8或v == 9或v == 10或简单地使用v> = 6 and v <= 10

对于v == 1或2或3或4或5也是一样的问题。

问题2:条件语句的语法是if condition then body end。 你不能有额外的then

修正后的代码:

如果v == 6或v == 7或v == 8或v == 9或v == 10 then
  bal = 减去(bal,1000)
  print("你输掉了赌局!你的新余额为", bal")
elseif v == 1或v == 2或v == 3或v == 4或v == 5 then
  bal = 增加(bal,2000)
  print("你赢了赌局!你的新余额为", bal)
end

其他问题:

为什么你要用减法和加法函数呢?用函数替换基本算术运算符是没有什么意义的。只需使用bal = bal - 1000

既然v似乎是一个介于1和10之间的整数,为什么不简单地使用v <6作为你的获胜条件? 其余步骤可以通过else完成。 你不需要显式检查每种情况。

而且你的赌局没有太多意义。 假设你在随机数生成器中使用均匀分布,你会赢一半的游戏并输掉一半的游戏。 因此,在多次赌局中,你保证会赢得比输得多。

2021-12-19 17:47:31