A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白马程序员 初级黑马   /  2013-9-26 17:48  /  1113 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package mypro01;{:soso_e134:}大半天才完成,爽一下{:soso_e195:}
import java.util.Scanner;
/**
*要求: 程序提示用户输入年份和月份,然后显示该月的整个日历。
* 提供资料:假定1800年1月1日是星期三。闰年为能被4整出的年份,世纪年(1800,1900,2000等)要整除400.
* 闰年2月有29天,平年28天。
* 1, 3 ,5, 7, 8 ,10 ,12月份为31天,4,6,9,11为30天。
* @author AGLA
*
*/

public class MoonShow {
        public static void main(String [] args){
                Scanner input = new Scanner(System.in);
                System.out.println("输入年份:");
                int year = input.nextInt();
               
                System.out.println("输入月份:");
                int month = input.nextInt();
               
                monthYear(month,year);                         //引用1,
                monthBiao(month,year);                         //引用5,
               
        }
       
        //1,建立显示月份、年份。和分隔线。显示星期天到星期六。
        public static void monthYear(int month,int year){
                String [] arr = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
                System.out.println("\t\t"+arr[month-1]+"  "+year+"\n-------------------------------------");
                System.out.println("  Sun  Mon  Tue  Wed  Thu  Fri  Sat");
        }
               
        //2,计算输入年份的1月1号距离1800年的1月1号的总天数。
        public static int totalday(int year){
                int totalday = 0;
                for(int x = 1800; x < year; x++){
                        if(x % 400 == 0 || (x % 4 == 0 && x % 100 != 0))
                                totalday +=366;
                        else
                                totalday +=365;
                }
                return totalday;
        }
       
        //3,计算月份的天数。
        public static int monthDays(int month,int year){
                int sum = 0;
               
                switch(month){
                case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                        sum = 31;
                        break;
                case 4: case 6: case 9: case 11:
                        sum = 30;
                        break;
                case 2:
                        if(year % 400 == 0 || (year % 4 == 0 && year% 100 != 0))
                                sum = 29;
                        else
                                sum = 28;
                        break;
                }
                return sum;
        }
       
        //4,计算输入年份一月一号是星期几。
        public static int weekday(int month, int year){
                int sum = 0;
                for(int a = 1; a< month;a++){
                        sum += monthDays(a,year);
                }
                int totalday = sum + totalday( year);
                int weekday = (totalday + 3) % 7;
                return weekday;
        }
       
        //5,输出月份天数表格。
        public static void monthBiao(int month,int year){
                 for(int a = 1;a<=weekday(month,year);a++){
                         System.out.print("     ");
                 }         
                        for(int j = 1;j <=monthDays(month,year) ;j++){
                                System.out.printf("%5d",j);                                            //
                                if((j+weekday(month,year))%7==0)                         //换行规格,逢七就要换行,原来可以这样。
                                        System.out.println();
                        }
        }
}


日历.png (6.1 KB, 下载次数: 14)

制作日历

制作日历

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马