为什么我不能在ruby中从'while'循环中中断?

j0pj023g  于 2023-02-12  发布在  Ruby
关注(0)|答案(1)|浏览(159)

我不明白Ruby为什么不中断这个while循环:

i = nil
while true
  i = gets
  if i == 5
    break
  end
  puts i
end

请解释原因。

dba5bblo

dba5bblo1#

你的代码不工作是因为你的循环在检查i == 5,但是gets总是以字符串的形式返回用户的输入,所以如果input是5gets将以"5"的形式返回。它不会将其转换为break所需的5。您需要将输入从字符串转换为数字。在用户输入中使用String#to_i,代码将按预期工作。

i = nil
while true
  i = gets.to_i
  if i == 5
    break
  end
  puts i
end

你也可以引入第二个变量j,用来检查输入是否为5,并保留i,这样如果用户输入的是一个字母,这个字母就会被打印到屏幕上,而不是0

while true
  i = gets.chomp
  j = i.to_i
  if j == 5
    break
  end
  puts i
end

另一种方法是使用Kernel#loop

loop do
  i = gets.chomp
  j = i.to_i
  break if j == 5
  puts i
end

另一种方法是使用until循环:

j = 1
until j == 5
  i = gets.chomp
  j = i.to_i
  puts i
end

相关问题