2014-09-05 56 views
0

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早在一個方法,當我讓運行,它給了我原本應在從文本文件閱讀零所有值的無限循環。

until行中的puts行和check聲明行用於調試目的,當然它們從不打印出來。

註釋掉了,當我運行程序時,它只是打印出最後一行,就好像直到循環沒有運行。如果需要更多的上下文代碼,請讓我知道,我會加以解決。

我的頭髮開始掉落這個,所以任何幫助表示讚賞!

編輯::是的,它應該是我== $ totalnumber。我在我的代碼中修復了它,但它仍然不執行該循環內的腳本。

+0

'我= $ totalNumber' - 不應該是'=='嗎? – matt 2014-09-05 15:06:27

+0

是的,沒錯。仍然不能解決問題,雖然... – 2014-09-05 15:21:52

+2

你幾乎肯定不希望你的變量以'$'開頭。 '$'使變量全局變量,這最終會讓你傷心。例如,'totalNumber'而不是'$ totalNumber'。 – 2014-09-05 15:22:22

回答

1

這是一個監督:

until i=$totalNumber 

此分配一個編號爲i;它總是如此。嘗試

until i==$totalNumber