这是代码。
puts "Give me a number"
one = gets.chomp
puts "Give me another number"
two = gets.chomp
if one > two
puts "This is the bigger number #{one}"
else
puts "This is the bigger number #{two}"
end
我不知道我的错在哪里。
答案 0 :(得分:2)
你没有将它们更改为整数,gets.chomp
给你字符串。
puts "Give me a number"
one = gets.chomp.to_i
puts "Give me another number"
two = gets.chomp.to_i
答案 1 :(得分:0)
首先,您正在收集“应用程序”的外部用户的输入,然后您必须决定如何管理错误的输入和转换。
Integer
,Float
?由于String
为Comparable
,您的原始代码将会运行,但可能无法产生预期的回报。
假设您只对整数感兴趣。
您需要考虑三种转换功能:
Kernel#Integer
(包含在顶级绑定中)String#to_i
。 String#to_i
永远不会返回错误。
'abcd'.to_i #=> 0
'1.2'.to_i #=> 1
nil.to_i #=> 0
如果String不是有效的Integer, Kernel#Integer
将返回错误。 (我通常认为它更适合用户输入)。
Integer('0') #=> 0
Integer('abcd') #=> ArgumentError
Integer(nil) #=> TypeError
最后,您必须比较您的输入。我个人会使用Array#max
,因为它传达了最佳的可读性(但仍以牺牲性能为代价,但您似乎并未处于性能关键系统中)。
我的最终代码看起来像这样(没有错误处理):
inputs = []
2.times do
puts 'Give me a number'
inputs << Integer(gets.chomp) # or use gets.chomp.to_i
end
puts "This is the bigger number : #{inputs.max}"
可以进行更多的重构,但我认为它不适合Ruby中的初学者。