使用while循环迭代数组

时间:2013-11-17 05:41:19

标签: ruby arrays while-loop

我试图使用这个while循环迭代我的数组以找到我的数组中最小的数字。想法?

array_2=[]
test_scores=[75, 100, 85, 65, 84, 87, 95, 99, 200]


while test_scores.count > 1
  if test_scores[1] > test_scores[0]
    array_2.push(test_scores[0])
    test_scores.count
  elsif
    total_scores[0] < test_scores[1]
      array_2.push(test_scores[1])
      test_scores.count
  elsif 
    test_scores.count==1
    break
  end
end

2 个答案:

答案 0 :(得分:3)

为什么不使用Enumerable#min

test_scores = [75, 100, 85, 65, 84, 87, 95, 99, 200]
test_scores.min
# => 65

test_scores未更改。 test_scores.count > 1始终为truewhile循环不会结束。

代码仅比较第一个元素(test_scores[0])和第二个元素(test_scores 1)。

答案 1 :(得分:2)

我认为你的算法太复杂了。假设您不想使用Ruby的Enumerable #min,那么总体目标是什么?如果您正在寻找一个最小值,那么您将返回一个变量。您必须检查数组中的所有值,以便更容易遵循以下内容?

minimum_value = nil
test_scores.each {|num| minimum_value = num if minimum_value.nil? or num < minimum_value}

基本上将minimum_value设置为nil会为test_scores中没有存储值而添加边缘情况。每个都只是迭代test_scores中的每个值(依次称它为每个成员'num'),然后它将minimum_value设置为第一个数字或任何小于当前数字的数字。