- ベストアンサー
JAVAの初心者です。
import java.io.*; class Sample1 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); int sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } } 上記のように組んだのですが、}whileのところでエラー が出てしまうのです。 これってなぜなのでしょう?? 初心者特有の質問かもしれませんがご教授いただけたら嬉しいです。宜しくお願いいたします。 関係ないのかも知れませんがJDK1-5-006を使用してます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと試してないですが、sen のスコープの問題だと思います。 do { の前に「int sen = 0;」 と記述して、 int sen = Integer.parseInt(hako); から「int」を取れば、 コンパイルエラーはなくなると思います。
その他の回答 (2)
- tachiwa
- ベストアンサー率34% (25/73)
ほかの方のご指摘通りです。コードを書いておきます。やりすぎですか。 import java.io.*; class Sample1{ public static void main(String args[])throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int sen = 0; do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } }
お礼
うう・・大切なお時間を沢山使っていただけて本当にありがとうございます。 タチワさんを含めて、お答えいただいたご回答はみなさんすばらしくわかりやすいので、今回は先着順とさせていただきました。 なので、タチワさん、お気を悪くしないでください。 お返事ありがとうございました^^
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
{ }while(); のブロックの中で int sen; が宣言されているからですね。 外にだしましょう
お礼
いつもお返事いただけてありがとうございます。 どんな質問もお答えできるのですね・・。 また解らないことがありましたら宜しくお願いします^^
お礼
ありがとうございます。宣言場所がだめだったのですね。 うう・・お恥ずかしい。 お返事ありがとうございました^^