在 "then" 附近需要执行一个操作。

最近有位朋友向我寻求关于用 Lua 编写可找到完全平方数的程序的帮助,于是我写了这个程序:

print ("选择你的最大数")
x = io.read()
y=1
z={}
a=1

while y * y ~= x and y < x / 2
    then do
        y = y + 1
end
if y * y = x
    then do
        z[a] = x
        a = a + 1
end
x = x - 1

为了测试这个程序,我在最后加入了

print z[1]

当我试图运行这个程序时,在第 8 行出现了以下错误:

do expected near then

Do 靠近 then。请问哪里出错了?谢谢。

点赞
用户107090
用户107090

在 Lua 中,循环语句的格式是 while <expr> do <code> end,条件语句的格式是 if <expr> then <code> end。此外,等于的比较符号是 ==。所以你的代码应该像这样:

while y * y ~= x and y < x / 2
    do
        y = y + 1
end
if y * y == x
    then
        z[a] = x
        a = a + 1
end
x = x - 1
2013-05-29 00:43:10
用户2345242
用户2345242

你的代码中有一些语法错误。第一个错误是 while 的写法应该是 while foo > bar do,而 if 语句使用的是 if foo > bar then 的语法。

另一个错误是在你的 if 语句中,你写成了 if y * y = x then。逻辑相等的运算符是 ==,所以应该改为 if y * y == x

2013-05-29 00:45:31