LoginSignup
1
1

More than 3 years have passed since last update.

Java を使ってEclipseのコンソールにカレンダーを表示させてみた。

Last updated at Posted at 2020-06-02

あくまでメモ用として。
・cal.set(int year,int month-1,1)するときに月が「0から11」⇒「1月から12月」にセットされることを忘れがちだった。
・cal.getActualMaximum(Calendar.DATE)でxxxx年xx月は何日あるのかを知ることができる。
・曜日と日付は配列を使って格納した。

image.png

・カレンダーを作って出力するクラス
 
package foo;
import java.util.Calendar;
public class Calmaker {

public void Makecal(int year,int month){
Calendar cal = Calendar.getInstance();
//int weekday = cal.get(Calendar.DAY_OF_WEEK);
//System.out.println(weekday);

int days[][] = new int[6][7];

System.out.println("日 月 火 水 木 金 土");
int row = 0;

//一日から最終日までループ
for (int i = 1; i <= cal.getActualMaximum(Calendar.DATE); i++) {
    //日付けをオブジェクトに設定
    cal.clear();
    cal.set(year, month-1, i); //月は0から11で指定されているので、-1してあげる。
    int weekday = cal.get(Calendar.DAY_OF_WEEK);

    //日付を拡張
    days[row][weekday-1] = i ;
    //System.out.println(days[row][weekday-1]);

    if(weekday % 7 ==0) {
        row ++;
    }
}

//出力
    for (int k = 0; k < 6; k++) {
        for (int j = 0; j < 7; j++) {

            String res = String.valueOf(days[k][j]);

            if(days[k][j]==0) {
                System.out.print("   ");
            }else if(days[k][j] < 10) {
                    System.out.print(" " + res + " ");

            }else if(days[k][j] >= 10) {
                res = res+" ";
                System.out.print(res);
            }
            if(j == 6) {
                System.out.println("\r\n");
            }
        }
    }
}

}
・メインクラス

package foo;

import java.util.Scanner;

public class Makecal {

public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    System.out.println("西暦を4桁で入力してください");
    Scanner sc1 = new Scanner(System.in);
    System.out.println("月を1から12で入力してください");
    Scanner sc2 = new Scanner(System.in);

    int year  = sc1.nextInt();
    int month = sc2.nextInt();
    System.out.println("西暦"+year+"年" + month +"月");
    System.out.println("");

    Calmaker clm = new Calmaker();
    clm.Makecal(year,month);
}

}

image.png

終わり。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1