首先,条件应该由and而不是or连接。
puts 'Which numbers do you want to see, the even or uneven ones?'
answer = gets.chomp
while answer != 'Even' and answer != 'Uneven'
puts 'Please answer Even or Uneven.'
answer = gets.chomp
end
其次,代码可以进一步改进:
不要重复自己:gets.chomp在循环内部移动。
添加downcase, 以便用户可以不区分大小写的方式输入字符串,例如 ,odd等Odd。使用和使用进行
无限循环 更容易退出循环。
循环创建了一个单独的范围,因此我们需要在外部范围中使其可见。为此,通过使用(带有参数返回该参数)使循环返回。使用所需值的数组和
替换重复的运算符。使用, 这里可以轻松创建字符串数组。loop do ... endbreakif
cur_answercur_answerbreak cur_answerbreak
!=include?Percent Strings%w[...]
#!/usr/bin/env ruby
puts 'Which numbers do you want to see, even or odd ones?'
answer = loop do
cur_answer = gets.chomp.downcase
break cur_answer if %w[ even odd ].include? cur_answer
puts 'Please answer even or odd.'
end
puts "answer=#{answer};"