#create empty array(array1)
array1 = []
i = 0
#从用户那里获取10个数字并将它们存储在数组中
while array1.size < 10
print "Enter a number: "
array[i] = gets.chomp.to_i
i += 1
end
#仅将唯一元素推送到新数组(array2)
k = 0
j = 0
array2 = []
while k < array1.size
if array1[k] != array1[j]
if array2.include? (array1[k])
puts "Element already exists"
else
array2.push(array1[k])
end
j += 1
end
k += 1
end
puts array2
它仅在某些情况下有效,但在任何时候,由于某种原因,第一个唯一的元素没有被添加到新数组中,我应该从1开始j或k,而不是0?
我知道我可以使用.uniq并将数组转换为一个集合,然后返回一个数组,或者只是将数组与&amp;相交,但我想让它成为没有ruby&#34;快捷键&#34; ,有什么建议吗?
答案 0 :(得分:0)
不确定。 k和j在启动时都等于0。 所以array1 [k] == array1 [j]为真,你得到k + = 1。 k现在为1,你错过了array1的第一个元素。
没有特别关于这个解决方案的Rubyish:
array2 = []
array1 = [1, 2, 3, 3, 2, 4, 5, 6]
i=0
while i<array1.size do
element = array1[i]
if !array2.include?(element) then
array2.push(element)
end
i += 1
end
puts array2.inspect