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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.Scanner;
  2. class year_0 {
  3.         /*
  4.         实现日历
  5.         年月
  6.         1900年一月的日历如下:
  7.         日 一 二 三 四 五 六
  8.                 1        2        3        4        5       
  9.         6        7        8        9        10        11       
  10.         12        13        14        15        16        17       
  11.         18        19        20        21        22        23
  12.         24        25        26        27        28        29       
  13.         30        31
  14.         定义功能点:显示某个月份的日历
  15.         首先得明确该月份有多少天。还有一号对应的星期。判断闰年和平年
  16.        
  17.        
  18.         */
  19.         public static void main(String[] args){
  20.                 Scanner sc=new Scanner(System.in);
  21.                 System.out.println("   欢迎来到日历系统");
  22.                 System.out.println("  ————————————");
  23.                 while (true) {
  24.                         System.out.println(" 请输入你所想知道的年月格式如199001");
  25.                         int yearmonth=sc.nextInt();
  26.                         int year=yearmonth/100;
  27.                         int month=yearmonth%100;
  28.                         System.out.println("你输入的是"+year+"年"+month+"月");
  29.                                 daying(year,month);
  30.                         System.out.println();
  31.                         System.out.println("  ————————————");
  32.                         System.out.println("谢谢使用!");
  33.                 }
  34.         }
  35.         //定义功能  打印日历已知年 和月
  36.         public static void daying(int year ,int month){
  37.                 System.out.println("  ————————————");
  38.                 System.out.println("日"+"\t"+"一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六");
  39.                 int dayday=days(year,month);//dayday是该年月份到1900年的天数
  40.                         int x=dayday%7+1;//x为星期几。也就是前面要打的空格数
  41.                 for (int a=0; a<x; a++) {
  42.                         System.out.print("\t");//空格
  43.                 }
  44.                 if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
  45.                         for (int day=1;day<=31 ;day++) {
  46.                                 if ((day+x-1)%7==0) {
  47.                                         System.out.println();
  48.                                 }
  49.                                 System.out.print(day+"\t");
  50.                         }
  51.                 }
  52.                 //30天的月份
  53.                 if (month==4||month==6||month==9||month==11) {
  54.                         for (int day=1;day<=30 ;day++) {
  55.                                 if ((day+x-1)%7==0) {
  56.                                         System.out.println();
  57.                                 }
  58.                                 System.out.print(day+"\t");
  59.                         }
  60.                 }
  61.                 //特殊月。2月。
  62.                 if(month==2){
  63.                         int day2=fengyear(year);
  64.                         for (int day=1;day<=day2 ;day++) {
  65.                                 if ((day+x-1)%7==0) {
  66.                                         System.out.println();
  67.                                 }
  68.                                 System.out.print(day+"\t");
  69.                         }
  70.                 }
  71.        
  72.         }
  73.         //定义功能     区分闰年和平年     1900年28 2000年29天2012 29  2015 28
  74.         public static int fengyear(int year){
  75.                 int x=0;
  76.                 if (year%4!=0|(year%100==0&&year%400!=0)) {// 一定要用单或。双或不行
  77.                          x=28;
  78.                 }else {
  79.                         x=29;
  80.                 }
  81.                        
  82.                 return x;
  83.         }
  84.         //定义一个功能  计算该年月份到1900年的天数。
  85.         //1901-1900=1    365+31+28+31+30
  86.         public static int days(int year,int month){
  87.                 int sum=0;
  88.                                 for (int x=1900; x<year ; x++) {
  89.                         sum+=(fengyear(x)+337);//一年365-28=327
  90.                 }
  91.                 if (month==1) return sum;
  92.                 if(month==2){
  93.                         sum+=31;
  94.                 }         
  95.                 if(month==3){
  96.                         sum+=(31+fengyear(year));
  97.                 }         
  98.                 if(month==4){
  99.                         sum+=(62+fengyear(year));
  100.                 }         
  101.                 if(month==5){
  102.                         sum+=(92+fengyear(year));
  103.                 }         
  104.                 if(month==6){
  105.                         sum+=(123+fengyear(year));
  106.                 }         
  107.                 if(month==7){
  108.                         sum+=(153+fengyear(year));
  109.                 }         
  110.                 if(month==8){
  111.                         sum+=(184+fengyear(year));
  112.                 }         
  113.                 if(month==9){
  114.                         sum+=(215+fengyear(year));
  115.                 }         
  116.                 if(month==10){
  117.                         sum+=(245+fengyear(year));
  118.                 }
  119.                 if(month==11){
  120.                         sum+=(276+fengyear(year));
  121.                 }
  122.                 if(month==12){
  123.                         sum+=(306+fengyear(year));
  124.                 }
  125.                 return sum;
  126.         }
  127.        
  128. }
复制代码

1 个回复

倒序浏览
学习了  。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马