Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

なぜエラーが出る?

題名のとおりなのですが・・・配列のところでエラーがでます。
エラー文章は以下のとおりです。
変数宣言が間違っているのでしょうか?
どなたか詳しく教えてください・・・。


D:\JAVA>javac kadai2.java
kadai2.java:56: シンボルを見つけられません。
シンボル: 変数 month_space
場所    : kadai2 の クラス
            ScondSpace = month_space[5];
                         ^
kadai2.java:73: シンボルを見つけられません。
シンボル: 変数 days
場所    : kadai2 の クラス
                       if (l <= days[MONTH]) {
                                ^
エラー 2 個


↓ソース
import java.io.*;

public class kadai2 {
    public static void main(String[] args) throws Exception {

        /************************************************************************/
        /*                              年月の取得                              */
        /************************************************************************/

        System.out.println("何年のカレンダーを表示しますか?数字だけ入力して下さい。");
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 1);
        try {
            String line = reader.readLine();
            int YEAR = Integer.parseInt(line);
            System.out.println("何月のカレンダーを表示しますか?数字だけ入力して下さい。");
            line = reader.readLine();
            int month = Integer.parseInt(line);

            int MONTH = month - 1;

        /************************************************************************/
        /*                      スペースの計算                           */
        /************************************************************************/
 
            int space = 0;
            int FirstSpace = 0;
            int ScondSpace = 0;
            int Z = YEAR % 4;

            if (Z == 0) {
               /* うるう年 */
               int[] days = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
               int[] month_space = {0, 3, 4, 0, 2, 5, 6, 3, 6, 1, 4, 6};
            } else {
               /* 普通の年 */
               int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
               int[] month_space = {0, 3, 3, 6, 1, 4, 5, 2, 5, 0, 3, 5};
            }
            

            if (YEAR >= 2001) {
               int X = YEAR - 2001;
               int Y = (X / 4) * 2 + X;
               if (X >= 4) {
                  Y = Y - (X / 4);
               }
               FirstSpace = (Y % 7 + 1) % 7;
            } else {
               int X = 2001 - YEAR;
               int Y = (X + 3) / 4 * 2 + X;
               if (X + 3 >= 4) {
                  X = X - (X + 3) / 4;
               }
               FirstSpace = 7 - (Y % 7 - 1) % 7;
            }
            ScondSpace = month_space[MONTH];

            space = FirstSpace + ScondSpace;

        /************************************************************************/
        /*                        カレンダーの表示                        */
        /************************************************************************/

            System.out.println("[" + YEAR + "年 "+ MONTH +"月]のカレンダーを表示します。");
            int k = space;
            int l = 1;
            for (int i = 0; i < 5; i++ ) {
                for (int j = 0; j < 7; j++) {
                    if (k > 0) {
                       System.out.println(" *" + "\t");
                       k = k--;
                    } else {
                       if (l <= days[MONTH]) {
                          System.out.println(" " + l + "\t");
                          l = l++;
                       } else {
                          System.out.println(" *" + "\t");
                       }
                    }
                }
            }

        /************************************************************************/
        /*                            エラー時の対応                            */
        /************************************************************************/

            } catch (IOException e) {
                System.out.println(e);
            } catch (NumberFormatException e) {
                System.out.println("入力が正しくありません。");
        }
    }
}

2

回答

89698

閲覧

2件の回答

評価

0

正しいエラー文章はこちらでした・・・。。。
すみません。。
ちなみにエラーが出ているのは「スペースの計算」の部分です。
よろしくお願いします。

D:\JAVA>javac kadai2.java
kadai2.java:56: シンボルを見つけられません。
シンボル: 変数 month_space
場所    : kadai2 の クラス
            ScondSpace = month_space[MONTH];
                         ^
kadai2.java:73: シンボルを見つけられません。
シンボル: 変数 days
場所    : kadai2 の クラス
                       if (l <= days[MONTH]) {
                                ^
エラー 2 個

評価

0

変数のスコープについて勉強してみてください。
http://www.javaroad.jp/java_variable.htm

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。