检查用户是否输入了数字

时间:2014-11-20 14:02:41

标签: ruby regex user-input

我正在开发一款小型游戏,可以显示数学问题,用户输入答案。

当用户写一封信时,它转换为0,但我希望该程序要求用户重新输入输入。

代码应该接受+, - 和数字 每个其他输入都应触发循环运行,直到输入正确的输入。

看看我的代码看起来如何......

def ask_questions

  question = @questionAndAnswerList[@currQuestion]

  a = question.question.q1
  b = question.question.q2

  print("what is #{a} #{a+b > question.answer ? "-" : '+'} #{b} ? = ")
  puts @userAnswer = gets().chomp

  #test if @userAnswer has a Digit value

  while /[+|-]\D/ =~ @userAnswer
    puts "Found a non digit in your input , please try again...."
    puts @userAnswer = gets.chomp

  end

  @userAnswer = @userAnswer.to_i

end

3 个答案:

答案 0 :(得分:2)

您可以使用Integer(),如果没有转换,则会引发异常。

begin
  @userAnswer = Integer(@userAnswer, 10)
rescue ArgumentError
  puts "#{@userAnswer.inspect} is not an integer, please try again..."
  @userAnswer = gets.chomp
  retry
end

答案 1 :(得分:1)

@userAnswer.scan(/[^0-9]/)

这将检查用户是否回答了0到9范围内不是数字的任何内容。

答案 2 :(得分:0)

您可以使用 Enumerable#all?来检查所有字符是否都是数字。这将检查每个字符是否在0-9范围内。如果有非数字,则会要求重复代码。

while !@userAnswer.chars.all?{|c|[*'0'..'9'].include?(c)}
  puts "Found a non digit in your input , please try again...."
  puts @userAnswer = gets.chomp
end