在 Ruby 中,是否有办法让用户在输入错误范围时通过条件语句循环返回?
In Ruby, is there a way to have the user loop back through a conditional statement if they input the wrong range?
我想知道是否有办法使用 if-else 语句来触发让用户重新输入有效输入的循环?我曾尝试使用 While 循环,因为这种结构在技术上是可行的,但我无法获得正确的实现。截至目前,我已经使用 if-else 条件单独测试有效范围内的每个数字,如果用户输入这些值中的任何一个,它就会继续。 else 语句告诉用户这是不正确的,但我似乎无法找到一种方法让用户返回,直到他们输入有效数字。
这是我正在使用的代码:
class Humanoid < Player
def play()
userinput = print 'Enter your move [1 - 5]: '
input = gets&.rstrip
if input == '5'
return input
elsif input == '4'
return input
elsif input == '3'
return input
elsif input == '2'
return input
elsif input == '1'
return input
else
return "That is not an option, choose again"
end
end
end
如果不正确,是否可以提示用户输入另一个号码?我觉得它应该是,但我目前不知道该怎么做。
我会使用一个永远运行的简单 loop
,除非你明确地 return
(或 break
)来自它:
class Humanoid < Player
def play()
loop do
print 'Enter your move [1 - 5]: '
input = gets.chomp
if %w[1 2 3 4 5].include?(input)
return input
else
puts "That is not an option, choose again"
end
end
end
end
此外,我清理了你的条件。
我会这样写:’
loop do
userinput = print 'Enter your move [1 - 5]: '
input = gets&.rstrip
if input == '5'
return input
elsif input == '4'
return input
elsif input == '3'
return input
elsif input == '2'
return input
elsif input == '1'
return input
puts "That is not an option, choose again"
end
基本上,这只是让它永远重复,直到返回一个值。如果 none 是,则打印问题并再次循环。
我想知道是否有办法使用 if-else 语句来触发让用户重新输入有效输入的循环?我曾尝试使用 While 循环,因为这种结构在技术上是可行的,但我无法获得正确的实现。截至目前,我已经使用 if-else 条件单独测试有效范围内的每个数字,如果用户输入这些值中的任何一个,它就会继续。 else 语句告诉用户这是不正确的,但我似乎无法找到一种方法让用户返回,直到他们输入有效数字。 这是我正在使用的代码:
class Humanoid < Player
def play()
userinput = print 'Enter your move [1 - 5]: '
input = gets&.rstrip
if input == '5'
return input
elsif input == '4'
return input
elsif input == '3'
return input
elsif input == '2'
return input
elsif input == '1'
return input
else
return "That is not an option, choose again"
end
end
end
如果不正确,是否可以提示用户输入另一个号码?我觉得它应该是,但我目前不知道该怎么做。
我会使用一个永远运行的简单 loop
,除非你明确地 return
(或 break
)来自它:
class Humanoid < Player
def play()
loop do
print 'Enter your move [1 - 5]: '
input = gets.chomp
if %w[1 2 3 4 5].include?(input)
return input
else
puts "That is not an option, choose again"
end
end
end
end
此外,我清理了你的条件。
我会这样写:’
loop do
userinput = print 'Enter your move [1 - 5]: '
input = gets&.rstrip
if input == '5'
return input
elsif input == '4'
return input
elsif input == '3'
return input
elsif input == '2'
return input
elsif input == '1'
return input
puts "That is not an option, choose again"
end
基本上,这只是让它永远重复,直到返回一个值。如果 none 是,则打印问题并再次循环。