【发布时间】:2020-09-14 03:40:24
【问题描述】:
我是使用 Ruby 写作的新手,我的编程语言课程有这个作业,我必须在 Ruby 中实现 Mergesort,以便用户可以输入他们自己选择的数字数组并以 -1 结尾。我以为我把所有东西都写对了,没有报告任何错误,但程序没有打印任何东西。
这是代码的重要部分:
puts "Please enter as many numbers as you would like followed by -1"
Many_Numbers = Array.new
x_1 = '-1'
while gets != x_1
Many_Numbers.push gets
end
sorted = merge_sort(Many_Numbers)
puts "SORTED CORRECTLY: #{sorted == Many_Numbers.sort}\n\n#{Many_Numbers}\n\n#{sorted}"
就像我说的那样,没有任何东西被打印出来,即使是 puts 方法中提供的东西,所以我没有任何东西可以显示错误。我在这里做错了什么?
编辑: 在我有了改进这部分代码的想法后,我编辑了代码,但我仍然一无所获。 这就是我改变的
puts "Please enter as many numbers as you would like followed by -1"
Many_Numbers = Array.new
input = gets
while input != -1
case response
when input != -1
Many_Numbers.push(input)
when input == -1
end
end
【问题讨论】:
-
你应该提供一个minimal working example。
puts功能与合并排序无关——您可以通过删除不相关的合并排序代码来最小化该示例。更重要的是,您需要包括如何执行此代码。运行此代码的其他人将无法重现该问题。首先,执行时会发生什么:ruby -e "puts 'hey'"? -
我编辑了问题,写出 `ruby -e "puts 'hey'" ` 不起作用。它会导致发生错误。 ` 语法错误,意外的 tIDENTIFIER,期待 do 或 '{' 或 '(' ruby -e puts "hey" ^~~~ ` 是它打印出来的。
-
在 shell 中运行
ruby -e "puts 'hey'",而不是在 Ruby 中。你在做什么来执行你的代码? -
我正在使用 sublime text 3 来运行我的代码。
-
Sublime Text 3 是一个文本编辑器——它不(通常)用于执行代码。在我看来,您可能有一个完全不同的问题,但没有足够的知识来提出正确/相关的问题。