Ruby:提示输入多个

时间:2017-03-26 06:07:15

标签: ruby

我正在尝试获取多个输入并将其分配给不同的变量(在irb中),但我似乎无法让它工作。我只能为第一个变量做这个,但对于接下来的三个,最后一个输入被分配给另外两个(我总共有4个)

我要做的是,根据第一个输入(比方说2),它会提示再输入3次。

t = gets.to_i

这是第一个输入,它被正确分配。 然后它会提示输入3个输入,但只有最后一个输入被保存并分配给所有三个变量。

a = gets.to_i
b = gets.to_i
k = gets.to_i

它会接受3个输入,但只有最后一个被保存?

如果我输入(第一次迭代)

1
10
3

在第一次提示后(我输入2) a,b和k的值为3

t = gets.to_i
a = b = k = []

for i in 0..t-1 do
  a[i] = gets.to_i
  b[i] = gets.to_i
  k[i] = gets.to_i
end

是因为它处于循环中吗?我把它放在那里,因为它必须要求a,b和k的值为t次,其中t是第一个输入。

我不确定我是否正确解释了它,但我希望有人能理解我想要做的事情

1 个答案:

答案 0 :(得分:1)

在Ruby中解决变量的唯一方法是引用。那就是说,

a = b = k = []

声明三个引用同一个对象。要修复它,请单独声明数组:

t = gets.to_i
a, b, k = [], [], []

for i in 0..t-1 do
  a[i] = gets.to_i
  b[i] = gets.to_i
  k[i] = gets.to_i
end

旁注: for循环不是ruby惯用语。你看。 G。而是Range#each(或Integer#upto):

(0...t).each do |i| # or 0.upto(t - 1) do |i|
  a[i] = gets.to_i
  b[i] = gets.to_i
  k[i] = gets.to_i
end