lua 代码能够工作,但在代码完成之前停止

我正在为 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

我期望它打印 '好的,请输入以下的更正版本...',但它甚至没有工作。

点赞
用户1944283
用户1944283

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

2019-05-02 07:21:14
用户5375464
用户5375464

在提示用户输入“是”或“否”时,使用以下信息: '哎呀,我错了。您是否想重新输入信息?请输入“是”或“否”。',然后询问需要更改的内容并将用户输入存储在answer3变量中。

但是,您正在将answer3的值与其他变量(如FNLN等)进行比较,而不是字符串(如“FN”“LN”)。

Lua不会抱怨这一点,因为未定义的变量被认为具有nil值。


此外,当仅更改FNLNHT时,您使用了未定义的变量answerVG。请改用变量VideoGame


在比较answer3的值时,您可以使用if-else阶梯而不是不同的if .. end,像这样:

if <condition1> then
    ...
elseif <condition2> then
    ...
else
    ...
end
2019-05-02 11:24:31
用户20854292
用户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