io.read()不起作用。

我刚开始写一个非常基本的计算器程序,它可以正常工作,除了我无法让它在完成计算后保持程序打开状态。io.read()看起来不起作用。我的代码如下所示:

promptmethod = "Would you like to use addition, subtraction, multiplication, or division?"
promptnumber1 = "Enter a number:"
promptnumber2 = "Enter another number:"
anotherprompt = "Would you like to make another calculation?"

print(promptmethod)
usermethod = io.read("*line")
print(promptnumber1)
number1 = io.read("*number")
print(promptnumber2)
number2 = io.read("*number")

if usermethod == "addition" then
answer = number1 + number2
stringanswer = "Your calculation is " .. number1 .. " + " .. number2 .. " = " .. answer
elseif usermethod == "subtraction" then
answer = number1 - number2
stringanswer = "Your calculation is " .. number1 .. " - " .. number2 .. " = " .. answer
elseif usermethod == "multiplication" then
answer = number1 * number2
stringanswer = "Your calculation is " .. number1 .. " × " .. number2 .. " = " .. answer
elseif usermethod == "division" then
answer = number1 / number2
stringanswer = "Your calculation is " .. number1 .. " ÷ " .. number2 .. " = " .. answer
else
error("Invalid operation or values.")
end

print(stringanswer)

io.read()

有人知道为什么会发生这种情况吗?谢谢!

点赞
用户501459
用户501459

一个更简单的例子:

io.read('*number')
io.read()

问题在于read('*number')并不会消费数字后面的换行符。因为换行符还留在了输入流中,所以当你调用io.read(默认读取一行)时,它立即返回。

要解决这个问题,只需再调用第二次io.read即可。

2013-01-15 18:20:16