我试图使用设置为布尔值的变量创建一个循环true
。我预计如果用户输入 "exit"
的值会更改为 false
,并且下一次迭代不会发生,因为 while
语句"isTrue == true"
不再true
。
isTrue = true
while isTrue == true do
input = gets
if input == "exit" then # exitと入力されたら
isTrue = false # プログラムを終了
else
puts "LOOPING..."
end
end
puts "ENDING NOW"
但它似乎不起作用,只是不断循环。为什么我的代码不起作用?
使用 gets.chomp
而不是 gets
来删除尾部 "",它将起作用。因此,您不会处理来自gets
<<br>div class="one_answers" 的 "exit>
[1] pry(main)> input = gets
exit
=> "exitn"
[2] pry(main)>
这是因为gets
输入中将包含一个n
。你需要处理它。
喜欢这个:
[2] pry(main)> input.chomp
=> "exit"
通常 ppl 是这样写的:
[3] pry(main)> input = gets.chomp
exit
=> "exit"
rstrip
会帮助你。
您的输入实际上并不完全是"退出",因为您按下了返回按钮。
下面的代码将起作用。
isTrue = true
while isTrue == true do
input = gets
if input.rstrip == "exit" then # exitと入力されたら
isTrue = false # プログラムを終了
else
puts "LOOPING..."
end
end
puts "ENDING NOW"
参考 - 标准文档
您的程序可以更加紧凑:
while gets.chomp != 'exit' do
puts 'LOOPING...'
end
puts 'ENDING NOW'
此版本的程序与您的程序完全相同,但更小,更快。
祝你在学习 Ruby 时好运!