2013-03-12 54 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