#わからないこと
単体で確認すると"false"や"true"が返って来るのに条件分岐でアルゴリズムの中に組み込むとエラーが出る。
#お題
1行目で文字列 s、2行目で文字列 t が入力されます。
s が t の中で何回出現するかカウントして出力してください。
##入力/出力例
#入力例 AA abdeeAAbAAAbfde
#出力例 3
#現在記述中のコード
ruby
1a = gets 2array = [] 3 4str = gets.chomp.chars 5str.each{ |i| array << i} 6 7a = 0 8y = 0 9array.length.times do 10 if (array[a] + array[a + 1]) == a 11 y += 1 12 a += 1 13 else 14 a += 1 15 end 16end 17puts y
#エラー文 Main.rb:11:in `+': no implicit conversion of nil into String (TypeError) from Main.rb:11:in `block in <main>' from Main.rb:10:in `times' from Main.rb:10:in `<main>'
上記のエラーからとりあえずタイプエラーで+が使えないと解釈しました。
#確認作業
問題の11行目に当たる下記記述を"puts"してみました
(array[a] + array[a + 1]) == a
不通に動きました。
#疑問点
なぜ単体で"puts"をした時は真偽を返してくれるのにif文に埋め込むとエラーがですのでしょうか??
どなたかご教授頂けますと幸いです。
よろしくお願いいたします。
よくわかりませんが array[a + 1] て無条件に参照しても大丈夫なの?
> array[a + 1] て無条件に参照しても大丈夫なの?
nilが取れるだけで、例外にはなりません。
https://docs.ruby-lang.org/ja/latest/method/Array/i/=5b=5d.html
回答1件
あなたの回答
tips
プレビュー