プロが教える店舗&オフィスのセキュリティ対策術

どうすればいいんでしょうか。。

Kada5.java41:シンボルを解決できません。
シンボル:変数 i
場所  :Kada5の クラス
if(i == 10){
 ^
エラー1個

と表示されて、先に進むことが出来ません。
このエラーはどういうえらなのでしょうか?

A 回答 (4件)

他の方への補足より:



for (int i = 0; i < 10; i++){・・・・・・・


if(i ==10){・・・・・・・・}

変数が使える範囲 (「スコープ」) を意識しなくっちゃね。int 型の i という変数は、for ループの中で宣言してあるから、for ループの中でしか使えない。for ループを出た後で i を使おうとしても、もう使用期限が切れているということ。

int i;

for (i = 0; i < 10; i++){・・・・・・・


if(i ==10){・・・・・・・・}

こういう風にループの外で宣言しておくと、ループを出た後でも変数は生き残っている。
    • good
    • 0
この回答へのお礼

は~、なるほど!
for(){}で設定した変数はその中でしか通用しないのですね。そのへん、よくわかっていませんでした
丁寧にありがとうございました。

さきほどのプログラムは無事完成いたしました^^

お礼日時:2005/06/12 21:11

変数にはスコープ(有効範囲)があります。


メソッドの中で宣言された変数はそのメソッド内でしか使用できません。
クラスの中で使おうと思ったら、メソッドの外でクラス変数として宣言しないと使用できません。
じゃぁ、メソッド内で宣言すれば、同じメソッド内でどこでも使えるかというとそうではなくて、
対応する「{」と「}」の中でしか使えません。
(メソッドも「{」と「}」でくくっていますね。)

ですので、
>for (int i = 0; i < 10; i++){・・・・・・・
>}
とfor文で宣言しているのであれば、そのfor文の中でしか使えません。

for文の外でも使いたいのであれば

int i;         //for文の外で宣言
for(i = 0;i < 10;i++){ //宣言は外に出したので初期値のみ設定
}

if(i == 10){      //ここでも使えるようになる

としないとだめですね。

他にも
for(int i = 0;i < 10;i++){ //…(1)
 //iが0~9について処理
}
for(int i = 0;i < 20;i++){ //…(2)
 //iが0~19について処理
}
とすると(1)のiと(2)のiは別物で、それぞれのfor文の中でのみ有効です。

また
try{
 int i = 0;
 //入力値(inputNumber)を数値に変換
 i = Integer.parseInt(inputNumber);
}catch(NumberFormatException){
 //変換できなかった場合の処理
 i = -1; //変換できなかった場合は-1とする
}
としようとしても、
int i

try{~}
の中でしか有効でないため、
catch{~}
の中では使えません。
もうお解かりでしょうか、上記の場合は
try{~}の外でint iを宣言しないといけません。
    • good
    • 0
この回答へのお礼

丁寧に有難うございます!
とても勉強になりした!
ありがとうございました。

お礼日時:2005/06/12 21:14

(1)


>for (int i = 0; i < 10; i++){・・・・・・・
>}
(2)
>if(i ==10){・・・・・・・・}  ←問題の箇所です

(1)と(2)は、同じメソッド内ですか?

メソッド1
{
(1)
}
メソッド2
{
(2)
}
のようになっていませんか?
もし、そうでしたら、(2)でもint i;としてください。
    • good
    • 0
この回答へのお礼

習い始めたばかりなので、メソッドがいまいちわかっていませんでした。
今回の質問の回答のおかげで完全理解に一歩近づけました!ありがとうございました!

お礼日時:2005/06/12 21:15

良くわからないのですが、


変数を宣言してから使ってますか?

この回答への補足

はい、この前の
for (int i = 0; i < 10; i++){・・・・・・・


if(i ==10){・・・・・・・・}  ←問題の箇所です


という具合にforのところで宣言しているんですが、それがいけないんでしょうか・・?

補足日時:2005/06/12 20:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!