Ruby noob在这里,我有一个令人愤怒的问题。
我的脚本中有些东西让Ruby跳过它的一部分。
#Main_block_begins_here
if __FILE__ == $0
#Open_the_file_with_values_and_weights
File.open(getFileName, 'r') do |f|
#Intial_data...
$totalNumber=f.gets.chomp!.to_i
$totalCapacity=f.gets.chomp!.to_i
$currentItemWeight=0
$currentItemValue=0
$spaceLeft=0
$spaceLeft=$totalCapacity
$takenWeight=0
$takenValue=0
#Make_a_heap_for_the_data
$prioQ = Heap.new do
#reads_values,_computes_them,_and_enqueues_them
until i==$totalNumber
total=0
value=f.gets.chomp!.to_i
weight=f.gets.chomp!.to_i
total=value/weight
puts "#{total}=t, #{value}=v, #{weight}=w. Correct?"
check=gets.chomp!
it=Obj.new(total, value, weight) do
prioQ.enqueue(it)
end
i+=1
end
end
#dequeueIt
puts "total weight taken was #{$takenWeight} and total value taken was #{$takenValue}."
end
end
注释行#dequeueIt是一个早先的方法,当我让它运行时,它给了我一个无限循环,其中所有值应该从文本文件中读入为零。
在puts循环中的puts行和check声明行用于调试目的,当然它们永远不会打印出来。
注释掉,当我运行程序时,它只打印出最后一行,好像直到循环从未运行。如果需要更多上下文代码,请告诉我,我会提出来。
我的头发开始脱落,所以任何帮助都会受到赞赏!
编辑::是的,应该是i == $ totalnumber。我在我的代码中修复了它,它仍然没有执行该循环内的脚本。
答案 0 :(得分:1)
这是一个疏忽:
until i=$totalNumber
这为我分配了一个号码;它总是如此。尝试
until i==$totalNumber