※これは広告ではありません。
実現したいこと
- whileを使ったループの暴走を止めて、ちゃんとしたプログラムに直したい。
前提
rubyでwhileのループを作っています。
whileのループな機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
プログラムが次のループに進まず暴走している? 非常に高速でメッセージが流れるため正しく読めているか自信はないのですが、 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 0番目の要素は20です。 (これが無限に続く) と、番号が0番目から進んでいないように見えます。 本当にずっと終わらないので、パソコンが壊れないか心配です……
該当のソースコード
ruby
1puts "ここから始まる" 2i = 0; 3list = [20, 40, 30, 10, 50]; 4puts "ループの前" 5while i < 5 6 puts (i.to_s) + "番目の要素は" + (list[i].to_s) + "です。" 7 ++i; 8end 9puts "ループ終わり"
調査したこと・試したこと
❶
まず、プログラムの目視確認をしました。
whileは、その後の条件が正しい限り続く。
最初は i=0 → 0 < 5 が正しいので「0番目の要素は20です」と出るはず
次は i=1 → 1 < 5 が正しいので「1番目の要素は40です」と出るはず
次は i=2 → 2 < 5 が正しいので「2番目の要素は30です」と出るはず
次は i=3 → 3 < 5 が正しいので「3番目の要素は10です」と出るはず
次は i=4 → 4 < 5 が正しいので「4番目の要素は50です」と出るはず
次は i=5 → 5 < 5 が違うので「ループ終わり」と出るはず
なので、良さそうに見えました。
もちろん、どこかが間違ってるので暴走しているとは思うのですが、私の知識では間違いが見つけられませんでした。
❷
次に、ループの終了条件が間違っていないか確認しました。
教科書を読み返しましたが、「while は条件が正しい限り繰り返す」と書いてあるので、「変数iが5より小さい間繰り返す」というプログラムになっていて、ここも良さそうに見えました。
❸
次に、変数iのインクリメント(変数を1増やすこと)の書き忘れを確認しました。
もう一度プログラムを確認しましたが、やはりちゃんとインクリメントの処理は書いてありました。
❹
次に、変数iのインクリメント(変数を1増やすこと)の書く場所の間違いを確認しました。
もう一度プログラムを確認しましたが、メッセージの後(ループの内側)に書いてあるので、場所も良さそうに見えました。
メッセージが出たあと変数iが1増えて次のループに進むようになっているように見えます。
僕の頭ではこれ以上はもう原因が思いつかず限界です。
初歩的な問題かもしれませんが、どなたか力を貸してください。
補足情報(FW/ツールのバージョンなど)
いまのところ、パソコンから変な音がしたり、熱くなったりはしてないですが、朝からずっと処理が止まらないので、心配です。

回答2件
あなたの回答
tips
プレビュー