2017-01-27 19 views
-1

ボウリングの電卓を作成しようとしていますが、これはテキスト文書からボウリングスコアを取り出し、配列に変換してからRubyで計算します。今まで私はこれを持っていますが、コードを実行しようとすると構文エラーが発生します。どんな助けもありがとう!Rubyでボーリング電卓を作成するときのトラブル

bowling.rb:65: syntax error, unexpected end-of-input, expecting keyword_end 

更新:私は、もはや構文エラーを見ているが、私は何も出力を取得していない...私の初心者の自分を助けてくれてありがとう

def read_ragged_array(the_filename) 

    ragged_array = [nil] 

    File.open(the_filename, "r") do |f| 

    while line = f.gets 
     fields = line.chomp.split(" ") 
     row = [ ] 

     fields.each do |field| 
     row << field.to_i 
     end 

     ragged_array << row 
    end 
    end 

    return ragged_array 
end 

def frame_score(the_frame, bonus1, bonus2) 
    if (the_frame[0] == 10) #strike 
     return 10 + bonus1 + bonus2 
    elsif (the_frame[0] + the_frame[1] == 10) #spare 
     return 10 + bonus1 
    elsif (the_frame[0] + the_frame[1] < 10) #empty 
     return the_frame[0] + the_frame[1] 
    end 

frames = read_ragged_array("game1.txt") 

sco = 0 

for i in 1..10 
if frames[i][0] == 10 && frames[i+1][0] == 10 
    bonus1 = 10 
    bonus2 = frames[i+2][0] 
    elsif frames[i][0] == 10 && frames[i+1][0] < 10 
    bonus1 = frames[i+1][0] 
    bonus2 = frames[i+1][1] 
    elsif frames[i][0] + frames[i][1] == 10 
    bonus1 = frames[i+1][0] 
    bonus2 = 0 
    else 
    bonus1 = 0 
    bonus2 = 0 
end 
end 

frame_score(frames[i], bonus1, bonus2) + sco = x 
print x 

end 

エラーが返さはありません!最後の行に

while line = f.getsa 

end:(コードを反映するように更新されました)

+0

また、構文エラーで貼り付けてください。 – splrs

+0

申し訳ありません! "ruby -w 'を実行し、特に "インデントの不一致"のようなものを読んでください – vendingMachineCoder123

+2

しかし、私が修正した2つのインデントエラーは、今は出力されません。 –

答えて

0

あなたの構文エラーは、この行(f.getsあるべき)です。

+0

これをキャッチするためにありがとう!私はまだ同じエラーが発生しています。 – vendingMachineCoder123

+0

更新されました。最後の行に 'end'が必要です – Shannon

+0

最後の行に終わりがあります。なぜエラーが私を困惑させているのですか?再度、非常に感謝! – vendingMachineCoder123

関連する問題