こんにちは、shinoです。毎日ボチボチプログラミングをしながら生活しています。その中での技術・エラーなどの紹介をしています。
今回は、Javaのエラーを紹介していきます。Javaを初めて使う方向けに書いてみます。私もこの記事を書いている時から始めています。ここから少しずつ学んで行こうかと思っているところでございます。
エラー内容
– **を変数に解決できません
どんなタイミングか
こんなコードを書いていました。以下のコードでエラーが出ます。
何が原因かわかりますか?エラーはわざと起こしています。
自分のところで起きてい状況と異なるかもしれないですが、
根本の原因の助けになるかもしれないので確認してみてください。
1 2 3 4 5 6 7 8 9 10 |
public class HelloWorld { public static void main(String args[]) { int i; for (i = 0; i < 10; i++) { int sum; sum += i; } System.out.println(sum); } } |
対応策
原因は分かりましたか?
今回は、わかりやすい状況かと思います。
結論から言うと、この場合だとスコープの問題です。
スコープについて簡単に言おうと定義が使える範囲と考えてください。
今回のソースに当てはめるとsumで定義した変数が使える範囲です。
for文内にてsumを定義しているのがわかります。
そのため、sumを利用したい場合はfor文内だけで利用できます。
最終的に合計値を算出したいのでこのプログラムはイケてません。
それを踏まえて以下のように修正します。
1 2 3 4 5 6 7 8 9 10 |
public class HelloWorld { public static void main(String args[]) { int sum = 0; int i; for (i = 0; i < 10; i++) { sum += i; } System.out.println(sum); } } |
これでエラーはなくなります。
対応として行ったのは、for文の外にsumの定義を持ってきました。
これにて、for文の中でも外でも使えるようになりました。
複雑なものでも原理的には同じだったりするので自身のコードをよく見てみてください。
最後に
お疲れ様です。エラーは解決できたでしょうか?
他にもエラー情報等も掲載してあるので読んでみて下さい。
解決できなければ、Java公式を確認してみるのもいいと思います。
ひと休憩の際におすすめ記事は「Exception in thread “main”のエラー解決法」です。時間があれば読んでみて下さい。
コメント