这个Ruby代码不起作用。我正在修理

时间:2018-04-07 15:38:38

标签: ruby

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马克的学校项目。非常感谢。

3 个答案:

答案 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中,而num2num3将为零

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