Ruby程序在终端中运行不正常

Ruby程序在终端中运行不正常,ruby,windows,command-line,terminal,git-bash,Ruby,Windows,Command Line,Terminal,Git Bash,我正在编写非常基本的Ruby程序来学习类的变量和方法。我写了以下内容: puts 'What is your favorite number?' fav_num = gets.chomp.to_i better_num = fav_num + 1 puts better_num.to_s + ' ' + 'is a much better number than ' + fav_num.to_s + '!' 当我在终端中使用ruby variables methods.rb运行这个程序时,它转

我正在编写非常基本的Ruby程序来学习类的变量和方法。我写了以下内容:

puts 'What is your favorite number?'
fav_num = gets.chomp.to_i
better_num = fav_num + 1
puts better_num.to_s + ' ' + 'is a much better number than ' + fav_num.to_s + '!'
当我在终端中使用ruby variables methods.rb运行这个程序时,它转到下一行,什么也不做。如果我键入一个数字,则会发生以下情况:

22
What is your favorite number?
23 is a much better number than 22!
我在终端中更新了Ruby


知道哪里出了问题吗

存在冲洗进出流的问题。我不知道它是如何在您的终端中完成的,但是下面的代码应该可以实现这个技巧(注意输出流的显式
flush
):


你在用什么终端?Git Bash。我在Windows机器上。bash是你的shell,你的终端是什么?这是“命令提示符”带来的结果吗?我可以使用Windows Powershell或命令提示符…这有帮助吗?这就成功了!对于将来的所有代码,我都必须这样做吗?如果我从PowerShell或命令行运行我的原始程序,它似乎可以工作。通常,您不需要刷新流。但是windows以拥有怪异的终端模拟器而闻名,因此我不能保证您将来永远不会遇到这种多余的
刷新
。)只要看到行尾字符,标准输出流就应该一直刷新,这将在
put
处理表达式时发生。只需为流打开
sync
STDOUT.sync=true
,然后运行代码而不使用
flush
。看见
$stdout.puts 'What is your favorite number?'
$stdout.flush
fav_num = $stdin.gets.chomp.to_i
better_num = fav_num + 1
$stdout.puts better_num.to_s + ' is a much better number than ' + fav_num.to_s + '!'