質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1119閲覧

配列エラーの理由が知りたいです

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/02/23 04:18

前提・実現したいこと

a_2[i] に対してエラーが出る理由を知りたいです

発生している問題・エラーメッセージ

Main.rb:25:in `block in <main>': undefined method `+' for nil:NilClass (NoMethodError) from Main.rb:23:in `each' from Main.rb:23:in `<main>'

該当のソースコード

ruby

1input_1 = "1 2" 2input_2 = "3 4" 3a_1 = input_1.split(" ") 4a_2 = input_2.split(" ") 5 6a_1.map!{|item| item.to_i } 7a_2.map!{|item| item.to_i } 8 9dif_1 = a_1[1] - a_1[0] 10dif_2 = a_2[1] - a_2[0] 11dif_h = a_2[0] - a_1[0] 12result = [] 13 14puts a_2.length 15 16(1..3).each{|i| 17 v_1 = a_1[i] + dif_1 18 v_2 = a_2[i] + dif_2 19 a_1.push(v_1) 20 #a_2.push() 21} 22p a_1

試したこと

配列の中身を出力したりした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Main.rb:25:in block in <main>': undefined method +' for nil:NilClass (NoMethodError)

このエラーの意味を考えてみましょう。
25行目で、nilに対して未定義のメソッド+を呼び出そうとしてエラーになっています。

コードを編集していずれていると思いますが、25行目はv_2 = a_2[i] + dif_2だと思います。
nilに対して+を呼び出してエラー」なので、nilなのはa_2[i]のはずです。

a_2は要素が2つしかありませんが、iにはeachの中で1, 2, 3が入ります。
すると、a_2[2]nilになります。

投稿2019/02/23 04:36

Kta-M

総合スコア456

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

エラーメッセージに書いてあるとおりです。a_1a_2は2個(0, 1)しか入っていないので、a_1[2]にアクセスするとnilになります。そして、nil + 数値のような演算はできないのでエラーとなります。

投稿2019/02/23 04:29

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問