io.read 被跳过了。Lua

我试着做一个计算器作为一个好的第一个任务。但我遇到了io.read函数的问题。

这是我的代码

io.write("让我们尝试在LUA中制作一个计算器!\n\n")

io.write("第一个数字?\n> ")
firstNum = io.read("*n")

io.write("第二个数字?\n> ")
secNum = io.read("*n")

io.write("运算符?\n>")
op = io.read()

--其余的代码在这里--

它允许我输入firstNumsecNum,但一旦它到达op就会退出而没有错误。这是输出

➜ lua test.lua
让我们尝试在LUA中制作一个计算器!

第一个数字?
> 10
第二个数字?
> 20
运算符?
>

这里我做错了什么?

点赞
用户1009479
用户1009479

原因是,直到按下ENTER键才读取一个数字。换行符仍然留在输入缓冲区中,然后被下一个io.read()读取。

一种方法是读取op直到它是有效的。例如,跳过空格字符:

repeat op = io.read() until op:match"%S"

或者,只读取一个标点符号字符:

repeat op = io.read() until op:match"%p"
2015-06-09 02:48:14