lua 代码能够工作,但在代码完成之前停止
2019-5-2 9:19:2
收藏:0
阅读:83
评论:3
我正在为 lua 编写用户输入代码,如果您在输入信息时出现错误,可以通过说出您想要更正的内容进行更正。当您输入两个字母时(例如,如果您把 england 拼错了,拼成了 englaund,您会输入 HT 进行更正),它会提示您进行更正,而在您完成更正之后,它只会说该代码已经完成,实际上它还没有完成。
我尝试过将变量设为本地变量,将所有块都设为 if 而不是 elseif。
--用户输入--
print('你好,你叫什么名字? ')
local name = io.read()
print('你的姓氏是什么?')
local LastName = io.read()
print('你居住的地方是哪里?')
local Hometown = io.read()
print('最后,你最喜欢的视频游戏是什么?')
local VideoGame = io.read()
--打印信息--
print(
'你是 ' .. name .. ' ' .. LastName ..
' ,你住在 ' .. Hometown ..
' ,你最喜欢的视频游戏是 ' .. VideoGame .. '。'
)
print('对吗?')
-- 确认 --
io.write("按 1 是正确的,按 2 是错误的。")
answer = io.read()
if answer == "1" then
print('耶,我是正确的!')
elseif answer == "2" then
print('啊,我错了。您想再次输入信息吗?说是或不是。')
local answer2 = io.read()
if answer2 == "yes" then
print('您要更改什么?输入 FN、LN、HT 或 VG 更改您想要更改的部分。')
local answer3 = io.read()
if answer3 == FN then
io.write('好的,请输入您的名字的更正版本。')
answerFN = io.read()
io.write('这是更正版本。')
io.write(
'你是 ' .. answerFN .. ' ' .. LastName ..
' 你住在 ' .. Hometown ..
' 其中你最喜欢的视频游戏是 ' .. answerVG .. '。'
)
end
if answer3 == LN then
print('好的,请输入您的姓氏的更正版本。')
answerLN = io.read()
print('这是更正版本。')
print(
'你是 ' .. name .. ' ' .. answerLN ..
' 你住在 ' .. Hometown ..
' 其中你最喜欢的视频游戏是 ' .. answerVG .. '。'
)
end
if answer3 == HT then
print('好的,请输入您的居住地的更正版本。')
answerHT = io.read()
print('这是更正版本。')
print(
'你是 ' .. name .. ' ' .. LastName ..
' 你住在 ' .. answerHT ..
' 其中你最喜欢的视频游戏是 ' .. answerVG .. '。'
)
end
if answer3 == VG then
print('好的,请输入您最喜欢视频游戏的更正版本。')
answerVG = io.read()
print('这是更正版本。')
print(
'你是 ' .. name .. ' ' .. LastName ..
' 你住在 ' .. Hometown ..
' 其中你最喜欢的视频游戏是 ' .. answerVG .. '。'
)
end
if answer2 == "no" then
print('好的,祝你好运。如果你改变主意,可以再次运行代码。')
end
end
end
我期望它打印 '好的,请输入以下的更正版本...',但它甚至没有工作。
点赞
用户5375464
在提示用户输入“是”或“否”时,使用以下信息: '哎呀,我错了。您是否想重新输入信息?请输入“是”或“否”。',然后询问需要更改的内容并将用户输入存储在answer3变量中。
但是,您正在将answer3的值与其他变量(如FN,LN等)进行比较,而不是字符串(如“FN”和“LN”)。
Lua不会抱怨这一点,因为未定义的变量被认为具有nil值。
此外,当仅更改FN或LN或HT时,您使用了未定义的变量answerVG。请改用变量VideoGame。
在比较answer3的值时,您可以使用if-else阶梯而不是不同的if .. end,像这样:
if <condition1> then
...
elseif <condition2> then
...
else
...
end
2019-05-02 11:24:31
用户20854292
你似乎在重新输入信息时使用了变量而不是字符串,但这些变量并未被设置为任何值。你还在每种重新输入信息的条件下使用独立的 if 语句,这可能会大大降低程序的运行速度。
相反,你可能希望放置以下代码:
if answer3 == "FN" then
...
elseif answer3 == "LN" then
...
elseif answer3 == "HT" then
...
elseif answer3 == "VG" then
...
end
2022-12-24 16:20:43
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你可能想将
answer3 == VG改为answer3 == "VG"(以及其他的情况也是如此)。目前,它正在与名为VG的变量进行比较,这个变量可能不存在。