检查用户是否输入了数字



我正在做一个小游戏,其中显示数学问题和用户输入答案。

当用户写一个字母时,它转换为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
@userAnswer.scan(/[^0-9]/)

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

您可以使用 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

相关内容

  • 没有找到相关文章

最新更新