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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

624閲覧

ruby undefined method `<' for nil:NilClass (NoMethodError)エラー

branchpeach

総合スコア12

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/04/24 09:02

概要

アルゴリズムの問題で、1234567890の数字の約数を求め、その約数が5000000以下の約数を全て足すというプログラムを作りたいです。

divisorメソッドは約数の計算をしております。
for文では約数が5000000以下かどうかの条件分岐をしております。

これを実行すると、
ruby undefined method "<" for nil:NilClass (NoMethodError)
のエラーが出ます

仮説

  • for文で範囲を指定するときにresult.lengthとしているが変数は使えない?

→適当な数値にすると実行される。

  • ではこれをresultという配列の中に入っている要素数分for文を回すにはどうすれば良いか?

ruby

1 2def divisor(num) 3 result = [] 4 i = 1 5 while i <= num do 6 remainder = num % i 7 if remainder == 0 8 result << i 9 end 10 i += 1 11 end 12 return result 13end 14 15sum = 0 16result = divisor(1234567890) 17 18for i in 0..result.length do 19 if result[i] < 5000000 20 sum += result[i] 21 end 22end 23 24puts sum 25

どなたかご教示いただけると幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

for i in result do
for文をこの書き方で行けました

投稿2021/04/24 09:06

branchpeach

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問