Ruby While循环打印

时间:2017-04-06 14:00:14

标签: ruby

我试图将numbers中的数字打印出来。 但是当if-expression在附加数字之前出现时,它似乎无法打印。只有我把if-expression放在后面,它才会。这是为什么?

numbers = []

while numbers.size < 5
  if numbers.size == 5
    puts numbers
    break
  end
  numbers << rand(0..99)
end

3 个答案:

答案 0 :(得分:1)

这是因为你有numbers.size < 5。 只要numbers.size5while就不再成立。您可以使用<= (或numbers.size < 6,如果您希望它仅在5时打印。

    numbers = []

    while numbers.size <= 5
        if numbers.size == 5
          puts numbers
          break
        end
        numbers << rand(0..99)
    end

或者你可以用更红宝石的风格来写这个:

    numbers = []
    5.times do numbers << rand(0..99) end
    puts numbers

答案 1 :(得分:0)

1. 案例1:如果在附加

之前放置声明

原因是因为在number.size == 5时循环不会执行,因为你设置的条件是在number.size&lt; 5。

<强> 2。如果在附加

之后放置声明

在附加数字列表后放置if语句将起作用,因为你仍然在循环体内,即你仍在执行你设置的条件为真的循环。 /强>

答案 2 :(得分:0)

您的代码不起作用,因为while循环在if条件为真之前退出。

更重要的是,if块是不必要的,会使您的代码混乱且效率低下。

Lemme重构它为你...

生成一个包含0到99之间的5个随机整数的数组,然后将其打印

numbers = []

while numbers.size < 5
    numbers << rand(0..99)
end

puts numbers