前提・実現したいこと
プログラミング初心者です。
配列がいくつも与えられた条件で、配列2以降から配列Xを作成し、Xの要素の引き算の結果を配列1の要素と比較して条件分岐に使おうと試みました。
イメージ
配列1[10, 20, 30] ←これの[1]以上かどうかを条件分岐に使いたい
配列2 [2, 35, 40]← これ以降の配列の[2]から新しい配列を作成
配列3 [40, 50, 80]
配列X [40, 80] ←新しい配列。これの[n+1] 番目から[n]番目を引く
計算結果 80 - 40 = 40
この計算結果、40が配列1の[1]である20以上かどうかで条件分岐をしようとした感じです。
一応引き算まではできていまして、クラスを判定してもIntegerでしたし、条件分岐内で配列1の数字を呼び出して表示してみても表示されます。
ところが、引き算の結果が配列1[1]以上なら~とやっている文がメソッドエラー判定になります。
なにか良くないことをしているのはわかるのですが、上記の通り表示をしてもクラスを調べても不明点が出てこないので自力では限界です。
ご教授いただけるとありがたいです。
※できればこの件自体の解決策と、そもそもの発想自体(配列を作り直して引き算をしていますが、そういう発想)の別案のヒントがいただけるとありがたいです。
発生している問題・エラーメッセージ
エラーメッセージ
undefined method -' for nil:NilClass (NoMethodError) from Main.rb:16:in
times'
from Main.rb:16:in `<main>'
該当のソースコード
Ruby
arr[0].times do
hikaku = (newary[n+1] - newary[n])
if hikaku > arr[1]
flag = 1
end
n = n +1
end
試したこと
はじめは(newary[n+1] - newary[n])をそのまま条件文に入れていましたが動かないので変数にしました。
(newary[n+1] - newary[n])自体は動いていて、printすると回数分の表示もされます。
補足情報(FW/ツールのバージョンなど)
見ていただきありがとうございます。実際は与えられた配列はもっとありまして、配列Xは[40, 80, 90, 100, 120]のようになります(必ずn+1番の方が大きくなります)
また、ソースコードは途中のものでイメージでいうと配列1にあたるのがarrで、与えられた配列から新しく作った配列に当たるのがnewaryです。(与えられた配列を処理するコードは省いています。またarr[0]で与えられた数字の数だけ配列が与えられるので、newaryの要素数はこの場合ですと10になっているはずです)
説明不足で申し訳ありません。
回答2件
あなたの回答
tips
プレビュー