はじめに:「変数が見つかりません」はよくある落とし穴
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)」というエラーについて解説予定です。
引き続き、エラーに強くなっていきましょう!
コメント