我正在尝试获取多个输入并将其分配给不同的变量(在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是第一个输入。
我不确定我是否正确解释了它,但我希望有人能理解我想要做的事情
答案 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