Lua中使用io.write接收输入后条件判断失效、character变量为nil如何解决?
问题原因
核心问题是类型不匹配:Lua 中io.read()默认返回字符串类型的输入结果,而你的条件判断逻辑是用字符串和数字 1/2/3/4 做全等比较。Lua 规定不同类型的值做==比较时会直接返回 false,因此所有条件分支都不会触发,character 变量没有被赋值,始终为 nil。
修复方案
有两种简单的修复方式:
- 方案1:将输入值转换为数字类型后再做判断
仅修改输入读取的代码即可,原有条件判断逻辑无需改动:
io.write('Which character do you choose?') menu_option = tonumber(io.read()) -- 用 tonumber 方法把输入的字符串转为数字类型
- 方案2:修改条件判断的比较值为字符串类型
无需修改输入读取的代码,仅把判断条件中的数字改为带引号的字符串即可:
if menu_option == "1" then character = "the rocker" elseif menu_option == "2" then character = "the vocalist" elseif menu_option == "3" then character = "the drummer" elseif menu_option == "4" then character = "the bassist" end
内容的提问来源于stack exchange,提问作者a7x
相关产品推荐
相关产品推荐

