zoukankan      html  css  js  c++  java
  • 【每日日报】第七天

    1 今日任务日期类

     题目要求:

     

     程序源代码:

    package Date1;
    import java.util.Scanner;
    public class Date1 {
     int[]  monthDay={31,28,31,30,31,30,31,31,30,31,30,31};
     String[]  weekName={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
     String[]  monthName={"Jan","Feb","Mar","Api","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
     public static void main(String[] args){
      int year,month,day;
         Date1 d1 = new Date1();
         Date1 d2 = new Date1(d1);
         Scanner input = new Scanner(System.in);
         year = input.nextInt();
         month = input.nextInt();
         day = input.nextInt();
         d1.setYear(year);
         d1.setMonth(month);
         d1.setDay(day);
         d1.yesterday();
         d1.chineseFormat();
         year = input.nextInt();
         month = input.nextInt();
         day = input.nextInt();
         d2.setYear(year);
         d2.setMonth(month);
         d2.setDay(day);
         d2.tomorrow();
         d2.americaformat();
         d2.printMonthCalendar();
         input.close();
     }
         int year,month,day;
         Date1()
         {
          System.out.println("Constructor run");
         }
         Date1(Date1 d1)                                 //重载构造函数
         {
          System.out.println("CopyConstructor run");
         }
         void  setYear(int Year)
         {
             year=Year;
         }
         int  getYear()
         {
             return year;
         }
         void  setMonth(int Month)
         {
             month=Month;
             if(Month>12) month=12;            //若month不在正确区间,大的设为12 小的设为1
             if(Month<=1) month=1;
         }
         int  getMonth()
         {
             return month;
         }
         void  setDay(int Day)
         {
             int x=0;
             day=Day;
             if(isLeapYear()==1 && month == 2) x=1;         //判断平闰年
             if(Day>(monthDay[month-1]+x)) day=monthDay[month-1]+x;   //润年二月,日期范围加1
             if(Day<=1) day=1;
         }
         int  getday()
         {
             return day;
         }
         void  tomorrow( )
         {
             int y=0;
             if(isLeapYear() == 1 && month == 2) y=1;
             if(day==(monthDay[month-1]+y))
             {
              day=1;
                 if(month==12)
                 {
                     month=1;       //如果是最后一个月,年份加1 月份为1
                     year++;
                 }
                 else month++;
             }
             else day++;
         }
         void  yesterday( )
         {
             if(day==1)
             {
                 int z=0;
                 if(month==1)
                 {
                     year--;
                     month=12;              //如果是第一天的话,年份减1 月份为12
                 }
                 else month--;
                 if(isLeapYear()==1 && month==2) z=1;
                 day=monthDay[month-1]+z;
             }
             else day--;
         }
         void  printMonthCalendar( )
         {
             int j=0,m=0,n;
             if(isLeapYear()==1 && month==2) m=1;
             n=monthDay[month-1]+m;
             for(int i=0;i<7;i++)
             {
              System.out.print(weekName[i]+" ");         //右对齐输出,三字符长度输出
             }
             System.out.println();
             int ww=weekDay();
             for(int i=0;i<ww;i++)
             {
                 System.out.printf("%4s"," ");                         //用空格填补空白
                 j++;
             }
             for(int i=1;i<=n;i++)
             {
                 System.out.printf("%4s",i+" ");
                 j++;
                 if(j%7==0) System.out.println();               //每输出七次换行
             }
             System.out.println();
         }
         void  chineseFormat( )
         {
          System.out.println(year+"年"+month+"月"+day+"日");
         }
         void  americaformat( )
         {
          System.out.print(monthName[month-1]+" ");
             System.out.print(day);
             System.out.println(","+year);
         }
         int  isLeapYear( )
         {
             if( (year%4)==0 && year%100 != 0|| (year%400)==0 ) return 1;    //判断平闰年
             else return 0;
         }
         int  weekDay( )
         {
             int w,y,d=0;
             if(year>2020)
             {
                 y=year-2020;            //以2020年1月1日为基准判断每月第一天为周几
                 d+=365*y+y/4+1;
                 for(int i=1;i<month;i++)
                 {
                     if(isLeapYear() == 1 && i==2) d++;
                     d+=monthDay[i-1];
                 }
                 d+=day;
                 w=d%7+3;
             }
             else if(year<2020)
             {
                 y=2020-year-1;
                 d+=365*y+y/4;
                 for(int i=12;i>=month;i--)
                 {
                     if(isLeapYear()==1 && i==2) d++;
                     d+=monthDay[i-1];
                 }
                 d-=day-1;
                 w=10-d%7;
             }
             else
             {
                 for(int i=1;i<month;i++)
                 {
                     if(isLeapYear()==1 && i==2) d++;
                     d+=monthDay[i-1];
                 }
                 w=d%7+3;
             }
             w%=7;
             return w;
         }
    }

      运行截图: 

     

    2 学会设置字符宽度  System.out.printf("%3s",s+" ");

    3 明天继续写题

  • 相关阅读:
    c++中ctype常用函数总结(isprint isblank..)
    c++的const总结(转)
    c++重载输入输出运算符
    c++中的友元重载
    c++函数模板二栈实现
    c++函数模板1
    c++中IO输入输出流总结<二>
    c++中IO输入输出流总结<一>
    四层与七层得区别(转)
    ORACLE操作
  • 原文地址:https://www.cnblogs.com/linmob/p/13297581.html
Copyright © 2011-2022 走看看