1 package Format_daqo; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Calendar; 5 import java.util.Date; 6 import java.util.Scanner; 7 8 /** 9 * 1、第一行的7个格子里放星期几 10 2、第二行的7个格子里分别放啥? 11 根据输入的日期判断: 12 如果对应月份的第1天是星期一,则第二行的每个格子里打印对应的天数 13 如果对应月份的第1天是星期二,则第二行的第1个格子里放空格,其他格子里放天数 14 如果对应月份的第1天是星期三,则第二行的第1~2个格子里放空格,其他格子里放天数 15 如果对应月份的第1天是星期四,则第二行的第1~3个格子里放空格,其他格子里放天数 16 如果对应月份的第1天是星期五,则第二行的第1~4个格子里放空格,其他格子里放天数 17 如果对应月份的第1天是星期六,则第二行的第1~5个格子里放空格,其他格子里放天数 18 如果对应月份的第1天是星期天,则第二行的第1~6个格子里放空格,其他格子里放天数 19 3、假设对应的月份总共有30天,则一共需要放30个数字,每行放满后,从新的一行开始放 20 * @author frank 21 * 22 */ 23 public class Calendar_Frank2 { 24 static int count;//用来统计放了多少次空格或数字 25 static void printSpace(int c){ 26 for(int i=0;i<c;i++){ 27 System.out.print(" "+" "); 28 count++; 29 } 30 } 31 32 public static void main(String[] args) throws Exception { 33 System.out.println("请输入日期(格式为yyyy-MM-dd):"); 34 Scanner scan = new Scanner(System.in); 35 String str = scan.next(); 36 // 37 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 38 Date date = sdf.parse(str); 39 // 40 Calendar cal = Calendar.getInstance(); 41 //将cal表示的时间修改成date所表示的时间 42 cal.setTime(date); 43 44 System.out.println("星期一"+" "+"星期二"+" "+"星期三"+" "+"星期四"+" "+"星期五"+" "+"星期六"+" "+"星期日"); 45 46 int day = cal.get(Calendar.DAY_OF_MONTH); //获取cal所表示的天,即输入的那一天(比如2015-12-22,就是22) 47 48 cal.set(Calendar.DAY_OF_MONTH, 1);// 49 50 int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取这个月有多少天 30 51 52 //该月的第一天是周几 53 switch(cal.get(Calendar.DAY_OF_WEEK)){ 54 case 1://代表国外的周日 55 printSpace(6); 56 break; 57 case 2://代表国外的周一 58 break; 59 case 3://代表国外的周二 60 printSpace(1); 61 break; 62 case 4://代表国外的周三 63 printSpace(2); 64 break; 65 case 5://代表国外的周四 66 printSpace(3); 67 break; 68 case 6://代表国外的周五 69 printSpace(4); 70 break; 71 case 7://代表国外的周六 72 printSpace(5); 73 } 74 for(int i=1;i<=days;i++){ 75 if(i==day){ 76 System.out.print(i+"* "); 77 }else{ 78 System.out.print(i+" "); 79 } 80 count++; 81 if(count%7==0){ 82 System.out.print(" "); 83 } 84 } 85 scan.close(); 86 } 87 }