Code Fix

初級

cannot find symbol (method) の原因と直し方

println、length、toUpperCase など、綴りと大文字小文字を間違えやすいメソッド名を集めました。

エラーメッセージの読み方

Main.java:3: error: cannot find symbol
Main.java
ファイル名
3
行番号 — javacが異常に気づいた位置。原因の行とは限りません
error
種別 — コンパイルエラー。実行まで到達しません
cannot find symbol
内容 — javacが期待していたもの、または見つけられなかったもの

このエラーが出る典型パターン

パターン1

 1  public class Main {
 2      public static void main(String[] args) {
 3          System.out.printline("Hello");
                           ^
 4      }
 5  }
Main.java:3: error: cannot find symbol symbol: method printline(String)

printlnは print line の略で、末尾は l と n の2文字です。

直し方: printlineprintln にします。

この問題を解いてみる →

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

パターン2

 1  public class Main {
 2      public static void main(String[] args) {
 3          String s = "java";
 4          System.out.println(s.Length());
                                    ^
 5      }
 6  }
Main.java:4: error: cannot find symbol symbol: method Length()

Javaのメソッド名は小文字始まりが慣習です。Stringの長さは length()、コレクションは size() と使い分けます。

直し方: Lengthlength にします。

この問題を解いてみる →

パターン3

 1  public class Main {
 2      public static void main(String[] args) {
 3          String s = "java";
 4          System.out.println(s.toupperCase());
                                       ^
 5      }
 6  }
Main.java:4: error: cannot find symbol symbol: method toupperCase()

複数語のメソッド名は2語目以降の頭を大文字にします。この書き方をキャメルケースと呼びます。

直し方: toupperCase()toUpperCase() にします。

この問題を解いてみる →

パターン4

 1  public class Main {
 2      public static void main(String[] args) {
 3          String a = "JAVA";
 4          String b = "java";
 5          System.out.println(a.equalsIgnorCase (b));
                                         ^
 6      }
 7  }
Main.java:5: error: cannot find symbol symbol: method equalsIgnorCase(String)

大文字小文字を無視して比較するメソッドです。Ignoreのeを1つ落とすだけで別のメソッド名になり、見つかりません。

直し方: equalsIgnorCaseequalsIgnoreCase にします。

この問題を解いてみる →

パターン5

 1  public class Main {
 2      public static void main(String[] args) {
 3          String s = "hello world";
 4          System.out.println(s.containes("world"));
                                     ^
 5      }
 6  }
Main.java:4: error: cannot find symbol symbol: method containes(String)

部分文字列が含まれるか調べるメソッドです。containesは1文字多く、正しくはcontainsです。

直し方: containescontains にします。

この問題を解いてみる →

よくある誤解

IDEの補完を使っていると気づけません。補完なしで手打ちしたとき、まず大文字小文字を疑ってください。

まとめ

cannot find symbol (method)は初級でつまずきやすい項目です。上の5パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

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