如何从同一行获取多个输入?

问题描述 投票:0回答:2

我不知道如何从一行获取多个输入。这是一个例子:

p=gets.chomp().to_i
q=gets.chomp().to_i
puts"#{p} #{q}"

当我运行它并获取输入时,我必须从新行获取它。例如,

3
4
output:
3 4

如果我输入

3 4

它不将

4
作为输入,而是等待下一行的另一个输入。应该做什么?

ruby input
2个回答
6
投票

gets
读取整行。如果您想处理其中的多个元素,您需要在该行上
split
,或对其执行正则表达式匹配等。在您的情况下:

p, q = gets.split.map(&:to_i)

顺便说一句,在您的代码中,

chomp
调用是多余的,因为无论字符串是否以换行符结尾,
to_i
都会正常工作。


0
投票

需要读取尽可能多的输入,例如,您需要根据需要从用户处读取三个或更多数字,方法是:

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
方法应用于数组的每个元素”的简洁方式。

© www.soinside.com 2019 - 2024. All rights reserved.