【初心者向けエラーシリーズ#2】「変数が見つかりません(cannot be resolved to a variable)」ってどういうこと?Javaのエラーを丁寧に解説!

この記事は約4分で読めます。
記事内に広告が含まれています。

はじめに:「変数が見つかりません」はよくある落とし穴

Javaを勉強し始めて少し慣れてくると、int型の変数やStringなどを使って、自分なりにコードを書く機会が増えてきます。

そんなときに突然現れるのがこのエラー

エラー: ○○ を解決できません(cannot be resolved to a variable)

「えっ?変数書いたのに見つからないの?」
これはJava初心者がつまずきやすい、非常に頻出するエラーのひとつです。

このエラーの原因と解決法を理解しておけば、エラーのたびに焦ることもなくなります。この記事では、よくあるミスのパターン別に解説していきます。

エラーの意味:「変数が見つかりません」=Javaがその変数を知らない

このエラー文

cannot be resolved to a variable

は、直訳すると「この変数を解決できません」という意味です。

もう少しわかりやすく言うと、
「その名前の変数、定義されてないけど?」
とJavaが言っている状態です。

つまり、変数が宣言されていない/スコープ外にある/スペルミスしているなどの原因が考えられます。

よくある原因と対処法

よくある原因1:変数を宣言していない

最も基本的なミスです。変数を使っているけど、その前に宣言をしていないパターン。

間違った例

public class Main {
    public static void main(String[] args) {
        System.out.println(number);  // numberが未宣言
    }
}

エラー文:

Main.java:3: エラー: number を解決できません
        System.out.println(number);
                           ^

修正方法:

public class Main {
    public static void main(String[] args) {
        int number = 10;
        System.out.println(number);
    }
}

よくある原因2:変数名のスペルミス

英語で書くことが多いプログラミングでは、スペルミスもありがちなミスです。

間違った例:

int total = 100;
System.out.println(totl);  // ← スペルミス!

修正方法:

int total = 100;
System.out.println(total);  // 正しい変数名に修正

よくある原因3:スコープの外から変数を参照している

変数には「スコープ(有効範囲)」があります。
スコープとは、変数が使える範囲のことです。
たとえば、if文の中で宣言した変数は、その外では使うことができません。

間違った例:

public class Main {
    public static void main(String[] args) {
        if (true) {
            int x = 5;
        }
        System.out.println(x);  // ← xはif文の中だけの変数なので使えない
    }
}

修正方法:

public class Main {
    public static void main(String[] args) {
        int x = 0;
        if (true) {
            x = 5;
        }
        System.out.println(x);  // スコープ内なのでOK
    }
}

エラーが出たときのチェックポイント

  • その変数、ちゃんと宣言していますか?
  • 宣言より先に使っていませんか?
  • スペルを間違えていませんか?
  • その変数、今いる場所(スコープ)で使えますか?

エラー文だけを見てもピンとこないときは、「その変数の存在をJavaが知らない理由」を探す意識でコードを見直してみましょう。

復習クイズ(やってみよう)

次のコードにはエラーがあります。どこが間違っているでしょうか?

public class Main {
    public static void main(String[] args) {
        System.out.println(score);
        int score = 90;
    }
}

まとめ:「変数が見つからない」と言われたら、まず宣言を確認!

  • 「cannot be resolved to a variable」は、Javaが変数を見つけられない時に出るエラー
  • よくある原因は「未宣言」「スペルミス」「スコープ外」
  • エラーが出た行だけでなく、その前のコードもよく見直すことが大事

このエラーは、慣れてくるとすぐに原因がわかるようになります。
焦らず、1つ1つチェックして、少しずつコードの読み方にも慣れていきましょう。

次回予告

次回は、「型が一致しません(Type mismatch)」というエラーについて解説予定です。
引き続き、エラーに強くなっていきましょう!

コメント

タイトルとURLをコピーしました