我试图将numbers
中的数字打印出来。
但是当if-expression
在附加数字之前出现时,它似乎无法打印。只有我把if-expression
放在后面,它才会。这是为什么?
numbers = []
while numbers.size < 5
if numbers.size == 5
puts numbers
break
end
numbers << rand(0..99)
end
答案 0 :(得分:1)
这是因为你有numbers.size < 5
。
只要numbers.size
为5
,while
就不再成立。您可以使用<=
(或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