ここから本文です

Rubyで配列内の整数の合計値を求めるプログラムについての質問です。

meg********さん

2015/9/1323:09:01

Rubyで配列内の整数の合計値を求めるプログラムについての質問です。

array = [1, 2, 3, 4, 5]
sum = 0

array.each do |i|
sum += i
end

puts sum

とすると、sumは15という結果を出力してくれるのですが、

array = [1, 2, 3, 4, 5]
num = array.size
sum = 0

for i in 0..num do
sum += array[i]
end

puts sum

とすると、
sample.rb:17:in `+': nil can't be coerced into Fixnum (TypeError)
from sample.rb:17:in `block in <main>'
from sample.rb:16:in `each'
from sample.rb:16:in `<main>'

というエラーが表示されます。
両方とも同じことを行っていると思うのですが、何が違うためにこのようなエラーが表示されるのでしょうか?
回答を頂けると助かります。

閲覧数:
436
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

uso********さん

2015/9/1414:38:07

for i in 0..num do
  p [i,array[i]]; sum += array[i]
end

としてみると分かりますが、numが5に
なっているのでiが5まで回ってarray[i]
がnilになりFixnumに加算不能と文句が。

for i in 0...num do
  sum += array[i]
end

とか

sum = array.inject(:+)

とかなら大丈夫かと。

質問した人からのコメント

2015/9/14 23:17:21

配列の先頭はarray[0]なので、配列の要素数が5つの場合はarray[4]が配列の最後だったのですね。
かなり初歩的なミスをしていたようでした(;・∀・)
回答ありがとうございました_(._.)_

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる