【问题标题】:How to limit user input to integers greater than 0 using methods?如何使用方法将用户输入限制为大于 0 的整数?
【发布时间】:2018-01-26 05:03:28
【问题描述】:

每次运行此代码时,我都会收到提示“INTEGER GREATER THAN 0”,即使我第一次输入大于 0 的整数也是如此。我试图用验证方法完成的是输入将只接受大于 0 的整数,如果他们输入其他内容,它将提示他们“整数大于 0”。任何帮助将不胜感激。

def verify(input)
  puts "please input an integer > 0"
  input = gets.chomp
  while input == 0 || input.class != Fixnum
    puts "INTEGER GREATER THAN 0"
    input = gets.chomp!.to_i
  end
end

puts "for your first number:"
num_1 = verify(num_1)
puts "for your second number:"
num_2 = verify(num_2)

def div(num_1, num_2)
  num_1 / num_2
end
def rem(num_1,num_2)
  num_1 % num_2
end

puts "#{num_1.to_s} divided by #{num_2.to_s} is #{div(num_1, num_2)} remainder #{rem(num_1,num_2)}"

【问题讨论】:

  • gets 返回一个字符串。将其转换为一个数字。 input = gets.to_i
  • 除法、正数和余数方法已经存在。还要注意a % ba.remainder b

标签: ruby loops methods


【解决方案1】:

修正了两个错误。

1.Sergio Tulentsev 指出您必须将输入转换为整数。

2.您需要返回验证方法的输入。

3.添加了is_integer?方法。

def is_integer?(param)
  true if Integer(param) rescue false
end

def verify(input)
  puts "please input an integer > 0"
  input = gets.chomp

  while input.to_i <= 0 || !is_integer?(input)
    puts "INTEGER GREATER THAN 0"
    input = gets.chomp!
  end

  return input.to_i
end

puts "for your first number:"
num_1 = verify(num_1)
puts "for your second number:"
num_2 = verify(num_2)

def div(num_1, num_2)
  num_1 / num_2
end
def rem(num_1,num_2)
  num_1 % num_2
end

puts "#{num_1.to_s} divided by #{num_2.to_s} is #{div(num_1, num_2)} remainder #{rem(num_1,num_2)}"

【讨论】:

  • 当我将代码更改为使用input = gets.chomp.to_i 而不是不接受浮点数时,程序只是将浮点数截断为整数。如果我想编程以使用INTEGER GREATER THAN 0 消息反弹怎么办?
猜你喜欢
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2014-11-07
相关资源
最近更新 更多