如何在ruby中的方法中调用用户输入

时间:2017-08-22 02:27:48

标签: ruby ruby-on-rails-3

我正在尝试将此用户输入号码发送给该功能,但我不知道我做错了什么。任何人都可以帮助我吗?

puts "\n Amount with decimals:\n "
STDOUT.flush
numb = gets

puts "\n Multiplier:\n "
STDOUT.flush
mult = gets

stoque(0.01, numb, 0.5, mult, 1)

2 个答案:

答案 0 :(得分:2)

如果需要浮点数,则需要将输入转换为它们:

numb = gets.to_f
...
mult = gets.to_f
...

答案 1 :(得分:1)

如果您希望Ruby为无效(即非十进制)输入引发异常,您还可以使用:

numb = Float(gets)

一些例子: 1

gets    | gets.to_f  | Float(gets)
--------+------------+--------------
'1'     | 1.0        | 1.0
'.5'    | 0.5        | 0.5
'1.2.3' | 1.2        | ArgumentError
''      | 0.0        | ArgumentError
'foo'   | 0.0        | ArgumentError

由于异常,您可能希望将其包装在begin-rescue块中,例如:

puts 'Amount with decimals:'
begin
  numb = Float(gets)
rescue ArgumentError
  puts 'Invalid amount'
  retry
end

1 请注意,如果使用 return 输入输入,则gets包含换行符"\n"。我已将其省略,因为to_fFloat()都会忽略尾随换行符。