Code Fix

Rubyエラー 練習問題 170問(全問無料)

コンパイルエラー・実行時エラー・ロジックの誤りを、空欄補充で直す練習問題です。登録不要でその場で解けます。

エラーメッセージで探す

今出ているエラーメッセージをそのまま貼り付けてください。行番号や変数名が違っていても、エラーの種類が一致すれば見つかります。

エラー難易度種別
end忘れによる SyntaxError の原因と直し方 #1 初級コンパイル
end忘れによる SyntaxError の原因と直し方 #2 初級コンパイル
end忘れによる SyntaxError の原因と直し方 #3 初級コンパイル
end忘れによる SyntaxError の原因と直し方 #4 初級コンパイル
end忘れによる SyntaxError の原因と直し方 #5 初級コンパイル
文字列の閉じクォート忘れによる SyntaxError #1 初級コンパイル
文字列の閉じクォート忘れによる SyntaxError #2 初級コンパイル
文字列の閉じクォート忘れによる SyntaxError #3 初級コンパイル
文字列の閉じクォート忘れによる SyntaxError #4 初級コンパイル
文字列の閉じクォート忘れによる SyntaxError #5 初級コンパイル
配列リテラルでカンマを付け忘れたときの SyntaxError #1 初級コンパイル
配列リテラルでカンマを付け忘れたときの SyntaxError #2 初級コンパイル
配列リテラルでカンマを付け忘れたときの SyntaxError #3 初級コンパイル
配列リテラルでカンマを付け忘れたときの SyntaxError #4 初級コンパイル
配列リテラルでカンマを付け忘れたときの SyntaxError #5 初級コンパイル
NameError: undefined local variable or method の原因と直し方 #1 初級実行時
NameError: undefined local variable or method の原因と直し方 #2 初級実行時
NameError: undefined local variable or method の原因と直し方 #3 初級実行時
NameError: undefined local variable or method の原因と直し方 #4 初級実行時
NameError: undefined local variable or method の原因と直し方 #5 初級実行時
undefined method for nil の原因と直し方 #1 初級実行時
undefined method for nil の原因と直し方 #2 初級実行時
undefined method for nil の原因と直し方 #3 初級実行時
undefined method for nil の原因と直し方 #4 初級実行時
undefined method for nil の原因と直し方 #5 初級実行時
文字列と数値を + で連結すると TypeError になる #1 初級実行時
文字列と数値を + で連結すると TypeError になる #2 初級実行時
文字列と数値を + で連結すると TypeError になる #3 初級実行時
文字列と数値を + で連結すると TypeError になる #4 初級実行時
文字列と数値を + で連結すると TypeError になる #5 初級実行時
ZeroDivisionError: divided by 0 の原因と直し方 #1 初級実行時
ZeroDivisionError: divided by 0 の原因と直し方 #2 初級実行時
ZeroDivisionError: divided by 0 の原因と直し方 #3 初級実行時
ZeroDivisionError: divided by 0 の原因と直し方 #4 初級実行時
ZeroDivisionError: divided by 0 の原因と直し方 #5 初級実行時
整数同士の割り算 / が小数にならず切り捨てられる #1 初級ロジック
整数同士の割り算 / が小数にならず切り捨てられる #2 初級ロジック
整数同士の割り算 / が小数にならず切り捨てられる #3 初級ロジック
整数同士の割り算 / が小数にならず切り捨てられる #4 初級ロジック
整数同士の割り算 / が小数にならず切り捨てられる #5 初級ロジック
シングルクォートの文字列では #{} が展開されない #1 初級ロジック
シングルクォートの文字列では #{} が展開されない #2 初級ロジック
シングルクォートの文字列では #{} が展開されない #3 初級ロジック
シングルクォートの文字列では #{} が展開されない #4 初級ロジック
シングルクォートの文字列では #{} が展開されない #5 初級ロジック
配列の範囲外アクセスはエラーにならず nil を返す #1 初級ロジック
配列の範囲外アクセスはエラーにならず nil を返す #2 初級ロジック
配列の範囲外アクセスはエラーにならず nil を返す #3 初級ロジック
配列の範囲外アクセスはエラーにならず nil を返す #4 初級ロジック
配列の範囲外アクセスはエラーにならず nil を返す #5 初級ロジック
ArgumentError: wrong number of arguments の原因と直し方 #1 初級実行時
ArgumentError: wrong number of arguments の原因と直し方 #2 初級実行時
ArgumentError: wrong number of arguments の原因と直し方 #3 初級実行時
ArgumentError: wrong number of arguments の原因と直し方 #4 初級実行時
ArgumentError: wrong number of arguments の原因と直し方 #5 初級実行時
メソッド名のタイプミスによる NoMethodError #1 初級実行時
メソッド名のタイプミスによる NoMethodError #2 初級実行時
メソッド名のタイプミスによる NoMethodError #3 初級実行時
メソッド名のタイプミスによる NoMethodError #4 初級実行時
メソッド名のタイプミスによる NoMethodError #5 初級実行時
each は配列を変換しない(map との違い) #1 初級ロジック
each は配列を変換しない(map との違い) #2 初級ロジック
each は配列を変換しない(map との違い) #3 初級ロジック
each は配列を変換しない(map との違い) #4 初級ロジック
each は配列を変換しない(map との違い) #5 初級ロジック
if文の中で == のつもりで = を書くと常に真になる #1 初級ロジック
if文の中で == のつもりで = を書くと常に真になる #2 初級ロジック
if文の中で == のつもりで = を書くと常に真になる #3 初級ロジック
if文の中で == のつもりで = を書くと常に真になる #4 初級ロジック
if文の中で == のつもりで = を書くと常に真になる #5 初級ロジック
FrozenError: can't modify frozen String の原因と直し方 #1 中級実行時
FrozenError: can't modify frozen String の原因と直し方 #2 中級実行時
FrozenError: can't modify frozen String の原因と直し方 #3 中級実行時
FrozenError: can't modify frozen String の原因と直し方 #4 中級実行時
FrozenError: can't modify frozen String の原因と直し方 #5 中級実行時
Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう #1 中級ロジック
Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう #2 中級ロジック
Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう #3 中級ロジック
Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう #4 中級ロジック
Hash.new([]) のデフォルト値は全キーで同じ配列を共有してしまう #5 中級ロジック
gsub! は置換が発生しないと nil を返す(gsub との違い) #1 中級実行時
gsub! は置換が発生しないと nil を返す(gsub との違い) #2 中級実行時
gsub! は置換が発生しないと nil を返す(gsub との違い) #3 中級実行時
gsub! は置換が発生しないと nil を返す(gsub との違い) #4 中級実行時
gsub! は置換が発生しないと nil を返す(gsub との違い) #5 中級実行時
引数なしの rescue は StandardError の子孫しか捕まえない #1 中級実行時
引数なしの rescue は StandardError の子孫しか捕まえない #2 中級実行時
引数なしの rescue は StandardError の子孫しか捕まえない #3 中級実行時
引数なしの rescue は StandardError の子孫しか捕まえない #4 中級実行時
引数なしの rescue は StandardError の子孫しか捕まえない #5 中級実行時
必須キーワード引数を渡し忘れると ArgumentError になる #1 中級実行時
必須キーワード引数を渡し忘れると ArgumentError になる #2 中級実行時
必須キーワード引数を渡し忘れると ArgumentError になる #3 中級実行時
必須キーワード引数を渡し忘れると ArgumentError になる #4 中級実行時
必須キーワード引数を渡し忘れると ArgumentError になる #5 中級実行時
private メソッドをレシーバ付きで呼ぶと NoMethodError になる #1 中級実行時
private メソッドをレシーバ付きで呼ぶと NoMethodError になる #2 中級実行時
private メソッドをレシーバ付きで呼ぶと NoMethodError になる #3 中級実行時
private メソッドをレシーバ付きで呼ぶと NoMethodError になる #4 中級実行時
private メソッドをレシーバ付きで呼ぶと NoMethodError になる #5 中級実行時
each で配列を回しながら delete すると要素が飛ばされる #1 中級ロジック
each で配列を回しながら delete すると要素が飛ばされる #2 中級ロジック
each で配列を回しながら delete すると要素が飛ばされる #3 中級ロジック
each で配列を回しながら delete すると要素が飛ばされる #4 中級ロジック
each で配列を回しながら delete すると要素が飛ばされる #5 中級ロジック
attr_writer だけでは値を読み出せない(attr_accessor との違い) #1 中級実行時
attr_writer だけでは値を読み出せない(attr_accessor との違い) #2 中級実行時
attr_writer だけでは値を読み出せない(attr_accessor との違い) #3 中級実行時
attr_writer だけでは値を読み出せない(attr_accessor との違い) #4 中級実行時
attr_writer だけでは値を読み出せない(attr_accessor との違い) #5 中級実行時
初期化前のインスタンス変数を参照すると警告なしで nil になる #1 中級ロジック
初期化前のインスタンス変数を参照すると警告なしで nil になる #2 中級ロジック
初期化前のインスタンス変数を参照すると警告なしで nil になる #3 中級ロジック
初期化前のインスタンス変数を参照すると警告なしで nil になる #4 中級ロジック
初期化前のインスタンス変数を参照すると警告なしで nil になる #5 中級ロジック
シンボルキーのハッシュを文字列キーで参照すると nil になる #1 中級ロジック
シンボルキーのハッシュを文字列キーで参照すると nil になる #2 中級ロジック
シンボルキーのハッシュを文字列キーで参照すると nil になる #3 中級ロジック
シンボルキーのハッシュを文字列キーで参照すると nil になる #4 中級ロジック
シンボルキーのハッシュを文字列キーで参照すると nil になる #5 中級ロジック
Comparable を include しても <=> が無いと比較演算子は使えない #1 中級実行時
Comparable を include しても <=> が無いと比較演算子は使えない #2 中級実行時
Comparable を include しても <=> が無いと比較演算子は使えない #3 中級実行時
Comparable を include しても <=> が無いと比較演算子は使えない #4 中級実行時
Comparable を include しても <=> が無いと比較演算子は使えない #5 中級実行時
case文で該当するwhenが無いとnilが返る #1 中級ロジック
case文で該当するwhenが無いとnilが返る #2 中級ロジック
case文で該当するwhenが無いとnilが返る #3 中級ロジック
case文で該当するwhenが無いとnilが返る #4 中級ロジック
case文で該当するwhenが無いとnilが返る #5 中級ロジック
Proc.new の中で return すると LocalJumpError になることがある #1 上級実行時
Proc.new の中で return すると LocalJumpError になることがある #2 上級実行時
Proc.new の中で return すると LocalJumpError になることがある #3 上級実行時
Proc.new の中で return すると LocalJumpError になることがある #4 上級実行時
Proc.new の中で return すると LocalJumpError になることがある #5 上級実行時
def self.method と def method を混同すると NoMethodError になる #1 上級実行時
def self.method と def method を混同すると NoMethodError になる #2 上級実行時
def self.method と def method を混同すると NoMethodError になる #3 上級実行時
def self.method と def method を混同すると NoMethodError になる #4 上級実行時
def self.method と def method を混同すると NoMethodError になる #5 上級実行時
coerce未実装のクラスと数値を演算すると TypeError になる #1 上級実行時
coerce未実装のクラスと数値を演算すると TypeError になる #2 上級実行時
coerce未実装のクラスと数値を演算すると TypeError になる #3 上級実行時
coerce未実装のクラスと数値を演算すると TypeError になる #4 上級実行時
coerce未実装のクラスと数値を演算すると TypeError になる #5 上級実行時
dup はfreeze状態を引き継がない(clone との違い) #1 上級実行時
dup はfreeze状態を引き継がない(clone との違い) #2 上級実行時
dup はfreeze状態を引き継がない(clone との違い) #3 上級実行時
dup はfreeze状態を引き継がない(clone との違い) #4 上級実行時
dup はfreeze状態を引き継がない(clone との違い) #5 上級実行時
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる #1 上級実行時
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる #2 上級実行時
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる #3 上級実行時
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる #4 上級実行時
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる #5 上級実行時
キーワード引数を委譲するメソッドで ** を付け忘れると ArgumentError になる #1 上級実行時
キーワード引数を委譲するメソッドで ** を付け忘れると ArgumentError になる #2 上級実行時
キーワード引数を委譲するメソッドで ** を付け忘れると ArgumentError になる #3 上級実行時
キーワード引数を委譲するメソッドで ** を付け忘れると ArgumentError になる #4 上級実行時
キーワード引数を委譲するメソッドで ** を付け忘れると ArgumentError になる #5 上級実行時
クラス変数 @@var はサブクラスとも共有されてしまう #1 上級ロジック
クラス変数 @@var はサブクラスとも共有されてしまう #2 上級ロジック
クラス変数 @@var はサブクラスとも共有されてしまう #3 上級ロジック
クラス変数 @@var はサブクラスとも共有されてしまう #4 上級ロジック
クラス変数 @@var はサブクラスとも共有されてしまう #5 上級ロジック
method_missing で super を呼ばないと本来のエラーが消える #1 上級ロジック
method_missing で super を呼ばないと本来のエラーが消える #2 上級ロジック
method_missing で super を呼ばないと本来のエラーが消える #3 上級ロジック
method_missing で super を呼ばないと本来のエラーが消える #4 上級ロジック
method_missing で super を呼ばないと本来のエラーが消える #5 上級ロジック
広告
広告スロット(未設定)

出題モード

まとめて解きたいときはこちら

このモードで始める

選んだモードは次の問題への移動にも適用されます。記録は端末内にのみ保存されます。

エラーの種類について

Rubyのエラーは大きく3種類に分かれます。構文エラー(SyntaxError)はコードを解析する段階で検出されるもので、実行が一切始まりません。endの閉じ忘れなどが代表例です。実行時エラーは構文としては正しいものの、実行中に投げられる例外で、NameErrorやNoMethodError、TypeErrorが代表例です。ロジックの誤りはどちらのエラーも出ませんが結果が期待と違うもので、eachとmapの取り違えや、配列の範囲外アクセスが例外にならずnilを返すことなどが典型です。

最も発見が遅れるのは3つ目です。Rubyは「エラーを出さずnilを返す」場面が多い言語のため、このサイトではロジックの誤りも問題に含めており、コンソール表示が赤ではなく琥珀色になります。

初級から順に解く

広告
広告スロット(未設定)