多个条件下的循环错误

时间:2018-04-27 00:23:07

标签: ruby

我有这个循环:

puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."
ans = gets.chomp!
if ans < 1
  puts "Tf bruh bruh"
elsif ans > 10
  puts "Now you just playin"
elsif x == 5
  print "You wildin B"
else
  puts "Fosho that's all I require"
end

它没有正常运行,我试图了解原因。如果你可以帮助我,我会很感激。

如果你知道练习问题的好网站,我很乐意尝试。我检查了Coderbyte和Code Kata,但他们设置的方式看起来并不正确,他们也没有问题可以解决基础问题。

2 个答案:

答案 0 :(得分:3)

这里的问题是您没有将ans转换为数字,而是将其与一个数字进行比较。 ans将成为一个字符串。

在Ruby中,当你将数字与字符串进行比较时,Ruby说这两者并不相等:

"1" == 1
=> false

您可以使用以下代码重现问题:

puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."

ans=gets.chomp!
p ans

p方法将输出&#34;检查&#34;该对象的版本,(它与执行puts ans.inspect相同)。这将显示它用引号括起来,表示它是一个字符串。

你可能想这样做:

ans = gets.chomp!.to_i

这里的to_i方法会将数字转换为整数,然后您的比较就能正常工作。

答案 1 :(得分:0)

您必须将输入字符串类型对象转换为整数类型

ans = gets.chomp!.to_i #input string convert into integer.
if ans < 1
  puts "Tf bruh bruh"
elsif ans > 10
  puts "Now you just playin"
elsif x == 5
  print "You wildin B"
else
  puts "Fosho that's all I require"
end