Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement lua设置了一个elseif语句来识别字母表中的字母_If Statement_Lua - Fatal编程技术网

If statement lua设置了一个elseif语句来识别字母表中的字母

If statement lua设置了一个elseif语句来识别字母表中的字母,if-statement,lua,If Statement,Lua,在lua中,如何设置elseif语句以从用户输入中识别字母表中的字母? 例如:elseif age=字母表 printInvalid age您可以尝试使用该方法计算输入是否为数字,并使用modulo(百分比运算符)测试数字是否为整数 例如,如果仅限于编辑elseif语句: elseif not tonumber(age) or tonumber(age)%1 ~= 0 then print("Invalid age") 如果您可以用类似的方式创建函数或编辑代码,那么这将是一种更有效的方法,因为

在lua中,如何设置elseif语句以从用户输入中识别字母表中的字母? 例如:elseif age=字母表 printInvalid age

您可以尝试使用该方法计算输入是否为数字,并使用modulo(百分比运算符)测试数字是否为整数

例如,如果仅限于编辑elseif语句:

elseif not tonumber(age) or tonumber(age)%1 ~= 0 then print("Invalid age")
如果您可以用类似的方式创建函数或编辑代码,那么这将是一种更有效的方法,因为它调用的数字更少:

local function IsInteger(number)
    number = tonumber(number)
    return number and number%1 == 0
end

-- later in code
elseif not IsInteger(age) then print("Invalid age")
您可以尝试使用该方法计算输入是否为数字,并使用modulo(百分比运算符)测试数字是否为整数

例如,如果仅限于编辑elseif语句:

elseif not tonumber(age) or tonumber(age)%1 ~= 0 then print("Invalid age")
如果您可以用类似的方式创建函数或编辑代码,那么这将是一种更有效的方法,因为它调用的数字更少:

local function IsInteger(number)
    number = tonumber(number)
    return number and number%1 == 0
end

-- later in code
elseif not IsInteger(age) then print("Invalid age")

虽然我喜欢Roch的方法,但我提供了一种我觉得更简单的方法

local n = tonumber(age)

if n and n%1==0 then
    --code
else
      print("Invalid age!")
end
首先是tonumber的年龄,确定它对应的数字

然后它检查n是否为真,既不是nil,也不是false,因为tonumber返回nil,如果它不是一个数字,它将计算它是否是一个数字

n%1==0部分只是确保它是一个整数


我相信这种方法更有效。

虽然我喜欢罗奇的方法,但我提供了一种我觉得更简单的方法

local n = tonumber(age)

if n and n%1==0 then
    --code
else
      print("Invalid age!")
end
首先是tonumber的年龄,确定它对应的数字

然后它检查n是否为真,既不是nil,也不是false,因为tonumber返回nil,如果它不是一个数字,它将计算它是否是一个数字

n%1==0部分只是确保它是一个整数


我相信这种方法更有效。

如果您经常调用tonumber,我建议您在if语句之前将tonumberage赋值给变量?它会更有效,更短。而且我不明白为什么你使用math.floor而不是我答案中的%运算符。它消除了额外的函数调用,而且速度更快。@warspyking这个问题是专门针对elseif语句的。对于任何我不限于此的代码,我会让它只调用一次tonumber并将其保存到变量中。然而,在这里,我在一个IF语句中工作,这是不可能的,除非我创建一个函数,或者假设我可以在IF语句的其他地方编写代码。我用地板,因为它能用。当然%也行,但我碰巧先想到了地板。我想我会在答案中添加%运算符,并制作一个函数版本。@warspyking我看不出将我的答案转换为与你的答案完全相同的意义。你想让我把你的密码复制粘贴到我的答案上吗不管怎么说,它们基本上是一样的。不,我只是希望得到一个解释,为什么这样更好,这样我就可以从中学习。无论如何,谢谢。您经常调用tonumber,我建议在if语句之前将tonumberage赋值给一个变量好吗?它会更有效,更短。而且我不明白为什么你使用math.floor而不是我答案中的%运算符。它消除了额外的函数调用,而且速度更快。@warspyking这个问题是专门针对elseif语句的。对于任何我不限于此的代码,我会让它只调用一次tonumber并将其保存到变量中。然而,在这里,我在一个IF语句中工作,这是不可能的,除非我创建一个函数,或者假设我可以在IF语句的其他地方编写代码。我用地板,因为它能用。当然%也行,但我碰巧先想到了地板。我想我会在答案中添加%运算符,并制作一个函数版本。@warspyking我看不出将我的答案转换为与你的答案完全相同的意义。你想让我把你的密码复制粘贴到我的答案上吗不管怎么说,它们基本上是一样的。不,我只是希望得到一个解释,为什么这样更好,这样我就可以从中学习。无论如何,谢谢你。