我不知道如何从一行获取多个输入。这是一个例子:
p=gets.chomp().to_i
q=gets.chomp().to_i
puts"#{p} #{q}"
当我运行它并获取输入时,我必须从新行获取它。例如,
3
4
output:
3 4
如果我输入
3 4
它不将
4
作为输入,而是等待下一行的另一个输入。应该做什么?
gets
读取整行。如果您想处理其中的多个元素,您需要在该行上 split
,或对其执行正则表达式匹配等。在您的情况下:
p, q = gets.split.map(&:to_i)
顺便说一句,在您的代码中,
chomp
调用是多余的,因为无论字符串是否以换行符结尾,to_i
都会正常工作。
您需要读取尽可能多的输入,例如,您需要根据需要从用户处读取三个或更多数字,方法是:
number_1, number_2, number_3, .... = gets.split.map(&:to_i)
如您所知
gets
读取一行输入的方法。 split
方法默认将从 gets
获取的字符串分割成基于空格的子字符串数组。因此,如果输入类似于“10 20 30”或更多数字,则 split
方法将返回一个数组 ["10", "20", "30", ...]。 map(&:to_i)
:这部分将从split
获得的数组的每个元素映射到其对应的整数值。 to_i
是将字符串转换为整数的方法。 &:to_i
是 Ruby 中的一种速记语法,称为“符号到过程对象转换”。它将符号 :to_i
转换为一个块,然后传递给 map
。本质上,这是“将 to_i
方法应用于数组的每个元素”的简洁方式。