如何编写代码以便用户输入某个值类型(如int),然后强制或循环提示,直到用户输入int,而不是字符串或带字符串字符的数字?我正在考虑使用for或while循环的某种类型的布尔值。
答案 0 :(得分:2)
让我们从一些基础知识开始。将其放入文件userinput.rb
:
print "Please enter a number: "
input = gets
puts input
然后使用ruby userinput.rb
运行。您会收到提示,程序会输出您键入的内容。
您希望输入为整数,因此我们使用Integer()
转换输入:
print "Please enter a number: "
input = gets
puts Integer(input)
输入一个整数,您将获得整数输出。输入其他任何内容,您就会得到类似的内容:
userinput.rb:3:in `Integer': invalid value for Integer(): "asdf\n" (ArgumentError)
from userinput.rb:3:in `<main>'
现在,您可以构建一个循环,提示用户输入整数:
input = nil # initialize the variable so you can invoke methods on it
until input.is_a?(Fixnum) do
print "Please enter a number: "
input = Integer(gets) rescue nil
end
有趣的部分是input = Integer(gets) rescue nil
,它转换整数,如果是ArgumentError
,如上所述,错误得到拯救,input
var再次为零。
更详细的编写方式(除了只捕获ArgumentError
例外)将是:
input = nil # initialize the variable so you can invoke methods on it
until input.is_a?(Fixnum) do
print "Please enter a number: "
begin
input = Integer(gets)
rescue ArgumentError # calling Integer with a string argument raises this
input = nil # explicitly reset input so the loop is re-entered
end
end
一些注意事项: