我正在做一个小游戏,里面显示数学问题,用户输入答案。
当用户写一封信时,它转换为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

最佳答案

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

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

关于ruby - 检查用户是否输入了数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27041468/

10-11 03:50