1 package Format_daqo;
2
3 import java.util.Calendar;
4 import java.util.Scanner;
5
6 public class calendar_wh {
7 public static void main(String[] args){
8 Scanner sc=new Scanner(System.in);
9 System.out.println("请输入年份:");
10 int year=sc.nextInt();
11 System.out.println("请输入月份:");
12 int month=sc.nextInt();
13 System.out.println("请输入天数:");
14 int day=sc.nextInt();
15
16 Calendar cal=Calendar.getInstance();
17 cal.set(year,month-1,1);//设置为该月的第一天
18
19 String[][] arr=new String[7][7];
20 arr[0][0]="星期天";
21 arr[0][1]="星期一";
22 arr[0][2]="星期二";
23 arr[0][3]="星期三";
24 arr[0][4]="星期四";
25 arr[0][5]="星期五";
26 arr[0][6]="星期六";
27
28 //获取输入月份的第一天是星期几
29 int x=cal.get(Calendar.DAY_OF_WEEK);//1代表星期天,2代表星期一...
30 //获取月份
31 int m=cal.get(Calendar.MONTH)+1;
32 //获取指定年月的最大天数
33 int mdays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
34
35 int d=1;
36 for (int i = 1; i < arr.length;i++) {//给二维数组赋值
37 for (int j = 0; j < arr.length;j++) {
38 //第二行的数组中,小于指定月份的第一天周几的前几天或大于本月的最大天数均赋值为空
39 if((i==1&&j<(x-1))||(d>mdays)){
40 arr[i][j]="";
41 //第二行的数组中,给本月的第一天周几赋值为1
42 }else if(i==1&&j==(x-1)){
43 arr[i][j]=d+"";
44 d++;
45 //第二行数组中,本月第一天之后,若指定天数不在第二行的依次赋值
46 }else if(i==1&&j>(x-1)&&d!=day){
47 arr[i][j]=d+"";
48 d++;
49 //第二行数组中,本月第一天之后,若指定天数在第二行的话,赋值*和天数
50 }else if(i==1&&j>(x-1)&&d==day){
51 arr[i][j]="*"+d+"";
52 d++;
53 //第二行数组以外,有与指定的天数相同的话,赋值*和天数
54 }else if(d==day){
55 arr[i][j]="*"+d+"";
56 d++;
57 //没有相同的天数,依次赋值天数
58 }else{
59 arr[i][j]=d+"";
60 d++;
61 }
62 }
63 }
64
65 for (int i = 0; i < arr.length; i++) {
66 for (int j = 0; j < arr.length; j++) {
67 System.out.print(arr[i][j]+"\t");
68 }
69 System.out.println();
70 }
71 }
72 }
1 请输入年份:
2 2016
3 请输入月份:
4 9
5 请输入天数:
6 21
7 星期天 星期一 星期二 星期三 星期四 星期五 星期六
8 1 2 3
9 4 5 6 7 8 9 10
10 11 12 13 14 15 16 17
11 18 19 20 *21 22 23 24
12 25 26 27 28 29 30
13