alice_quxのブログ RSSフィード

2008年06月06日

コマンドライン上で、カレンダー表を表示するプログラム

備忘録

この前、JSPでなんとか作った、カレンダー表

http://d.hatena.ne.jp/alice_qux/20080524/1211601792

これを、コマンドラインでのカレンダー表として、作り直してみるw

あたらしく、Mainファイルを作って、Calクラス.Calメソッドより参照させる。

・Main.java

・Cal.java

//Main.java

public class Main{

public static void main(String[] args){

try{

if(args.length>0){

if(args.length>1){

Cal.cal(Integer.parseInt(args[0]),Integer.parseInt(args[1]));

}else{

Cal.cal(Integer.parseInt(args[0]),0);

}

}else{

throw new java.lang.NumberFormatException();

}

}catch(java.lang.NumberFormatException e){

Cal.cal(0,0);

}

}

}

//Cal.java

import java.util.Calendar;

public class Cal {

public static void cal(int y, int m){

Calendar cal = Calendar.getInstance();

Calendar cal2 = Calendar.getInstance();

int YEAR = cal.get(Calendar.YEAR);

int MONTH = cal.get(Calendar.MONTH)+1;

int DATE = cal.get(Calendar.DATE);

if(y>0){

YEAR=y;

}

if(m>0 && m<13){

MONTH=m;

}

cal.set(YEAR,MONTH-1,DATE);

cal2.set(YEAR,MONTH-1,1);

int max = cal.getActualMaximum(Calendar.DATE);

int w = cal.get(Calendar.DAY_OF_WEEK);

int ww = cal2.get(Calendar.DAY_OF_WEEK);

String[] w2 = {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"};

String WEEK = w2[w-1];

int k = 0;

int l = 0;

System.out.println(YEAR+"/"+MONTH+"/"+DATE+"("+WEEK+")");

for(int i=0;i<7;i++){

System.out.print(w2[i]+" ");

}

System.out.println();

for(int i=0;i<6;i++){

for(int j=0;j<7;j++){

if(i==0 && j==ww-1){

k++;

System.out.print("0"+k+" ");

}else{

l = l+k;

if(l>max || i==0 && j<ww){

System.out.print(" ");

}else if(l<max){

if((l+1)>9){

if(l+1 == DATE){

System.out.print(l+1+" ");

}else{

System.out.print(l+1+" ");

}

}else if((l+1)<10){

if(l+1 == DATE){

System.out.print("0"+(l+1)+" ");

}else{

System.out.print("0"+(l+1)+" ");

}

}

}

}

}

System.out.println();

}

}

}


Mainから起動させます。

今年の今月のカレンダー表を表示する。

$ javac Main.java Cal.java

$ java Main

2008/6/6(Fr)

Su Mo Tu We Th Fr Sa

01 02 03 04 05 06 07

08 09 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30


Mainファイルの引数(args[0])に、年数を指定して実行すると、指定年数の今月のカレンダー表を表示する。

$ java Main 2007

2007/6/6(We)

Su Mo Tu We Th Fr Sa

01 02

03 04 05 06 07 08 09

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

Mainファイルの引数(args[0])に、年数を指定し、引数(args[1])に、月数を指定して実行すると、指定年数の指定月数のカレンダー表を表示する。

$ java Main 2008 11

2008/11/6(Th)

Su Mo Tu We Th Fr Sa

01

02 03 04 05 06 07 08

09 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30

※表1段目、数字が左にずれているが、実際は右寄せ。(ターミナルからエビデンスとったもの)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/alice_qux/20080606/1212757490