2013-03-12 53 views
-1
(100..999).each do |x| 
    (100..999).each do |y| 

    z = x * y 
    a = [] 

    if z.to_s.reverse == z.to_s 
     a.push(z) 
    end 

    puts a 

    end 
end 

此代码可能绝对可怕,但我遇到问题,无法将值粘贴到我的数组中。每当我运行代码时,它会将所有数字作为一个数组返回,并且我不确定为什么,为什么以及如何解决这个问题的任何解释都会很好。更多的是学习练习而不是任何事情。在Ruby中添加粘贴到数组中的元素

+0

缩进你的代码会让它更容易跟随。否则,这并不可怕。 – iamnotmaynard 2013-03-12 18:15:28

+0

对不起。我的爸爸。 – 2013-03-12 18:18:36

回答

3

你需要把你的块外a = [],就像这样:

a = [] 

(100..999).each do |x| 
    (100..999).each do |y| 

    z = x * y 

    a.push(z) if z.to_s.reverse == z.to_s 

    end 
end 

puts a 

如果你不能做到这一点,一个新的阵列将每一个循环期间进行。为了理解这一点,你应该查看有关范围的文档。如果你在每个范围内定义了a变量,它将在本范围内,这就是为什么你的值不“粘” - >持久。

+0

我明白你的观点,但看起来并不奏效。当数组位于范围内时,它会打印出正确的值,但是,如果更改它会打印出许多相同的值并需要更长的时间,但实际上我没有看到它完成。 – 2013-03-12 18:26:36

+0

由于您编写代码的方式。使用puts,在每个循环中逐行输出数组元素。我将修改代码并告诉你应该如何工作。 – Speed 2013-03-12 18:28:08

+0

好的,这是您的固定版本。 – Speed 2013-03-12 18:29:36