num1, num2, num3 = gets.to_i
puts "Your first number = Your second number + Your third number. True or
False?"
puts num1
puts num2
puts num3
puts num1 == num2 + num3
我希望这段代码显示用户输入的3个数字(工作正常),并告诉第一个数字等于接下来2个数字的总和是真还是假。它似乎不起作用。解决办法是什么?请告诉我,因为这是一个50马克的学校项目。非常感谢。
答案 0 :(得分:1)
如果获取是一个数组,则该类没有名为 to_i 的方法(Array Class Definition)
如果是数组,则应删除 .to_i ,以便数组元素自动与变量对齐。
gets = [1,2]
num1, num2, num3 = gets # num1=1, num2=2, num3=nil
gets = [1,2,3,4]
num1, num2, num3 = gets # num1=1, num2=2, num3=3, and the numer 4 never gets asigned
gets = [1,2,3]
num1, num2, num3 = gets # num1=1, num2=2, num3=3
答案 1 :(得分:1)
gets
将返回单个字符串,因此在以下代码中,您将仅将一些整数值存储到变量num1
中,而num2
,num3
将为零
num1, num2, num3 = gets.to_i
所以改为上面改为
num1, num2, num3 = gets.to_i, gets.to_i, gets.to_i
希望这能解决您的问题。
答案 2 :(得分:0)
如果你应该从命令行获取数字:
print 'Enter num1: '
num1 = gets.to_i
print 'Enter num2: '
num2 = gets.to_i
print 'Enter num3: '
num3 = gets.to_i
如果gets
是数组:
gets.each_with_index do |value, i|
num1 = value.to_i if i == 0
num2 = value.to_i if i == 1
num3 = value.to_i if i == 2
end
如果gets
是字符串(例如“1,2,3”):
array = gets.split(',') # Now this is an array ["1", "2", "3"]
array.each_with_index do |value, i|
num1 = value.to_i if i == 0
num2 = value.to_i if i == 1
num3 = value.to_i if i == 2
end