Code Fix

初級

';' expected の原因と直し方

セミコロンの付け忘れで出る最頻出エラー。javacがどこで文の終わりを探しているかを読めば、行番号が実際の原因とずれる理由も分かります。

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

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

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

パターン1

 1  public class Main {
 2      public static void main(String[] args) {
 3          int count = 10 
                          ^
 4          System.out.println(count);
 5      }
 6  }
Main.java:3: error: ';' expected

Javaは文の終わりをセミコロンで判断します。改行では文が終わりません。

直し方: (空); にします。

この問題を解いてみる →

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

パターン2

 1  public class Main {
 2      public static void main(String[] args) {
 3          System.out.println("Hello") 
                                       ^
 4      }
 5  }
Main.java:3: error: ';' expected

メソッド呼び出しも1つの文です。閉じ括弧で終わりではなく、そのあとにセミコロンが要ります。

直し方: (空); にします。

この問題を解いてみる →

パターン3

 1  public class Main {
 2      static int twice(int n) {
 3          return n * 2 
                        ^
 4      }
 5      public static void main(String[] args) {
 6          System.out.println(twice(3));
 7      }
 8  }
Main.java:3: error: ';' expected

return文もセミコロンで閉じます。次の行に } があっても、javacは文が続いていると解釈します。

直し方: (空); にします。

この問題を解いてみる →

パターン4

 1  public class Main {
 2      public static void main(String[] args) {
 3          int count = 0;
 4          count = count + 1 
                             ^
 5          System.out.println(count);
 6      }
 7  }
Main.java:4: error: ';' expected

代入文もセミコロンで終わります。宣言でなくても文である以上、同じルールが適用されます。

直し方: (空); にします。

この問題を解いてみる →

パターン5

 1  public class Main {
 2      public static void main(String[] args) {
 3          for (int i = 0; i < 5; i++) {
 4              if (i == 3) {
 5                  break 
                         ^
 6              }
 7              System.out.println(i);
 8          }
 9      }
10  }
Main.java:5: error: ';' expected

breakも1つの文です。キーワードだけで完結しているように見えても、セミコロンが必要です。

直し方: (空); にします。

この問題を解いてみる →

よくある誤解

報告される行番号が原因の行とは限りません。javacは次の行まで読んでから「;がない」と判断するため、実際に抜けているのは1つ前の行であることがほとんどです。

まとめ

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

演習をはじめる

関連するエラー

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