• 20200724 千锤百炼软工人第十九天


    今天完成了一个日期类的小程序

    在此附上代码和截图

    以下是Date类代码

    package a20200724;
    public class Date {
     String[] weekName= {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
     String[] monthName={"Jan","Feb","Mar","Api","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
     private int year;
     private int month;
     private int day;
     public int  isLeapYear(){
             if ((this.year % 4 == 0 && this.year % 100 != 0) || this.year % 400 == 0)return 1;
             else return 0;
          }
     Date(int a,int b,int c){
      if(b>12) {
       this.month=12;
       if(c>31) {
        this.day=31;
       }
       else if(c<1) {
        this.day=1;
       }
       else {
        this.day=c;
       }
      }
      else if(b<1) {
       this.month=1;
       if(c>31) {
        this.day=31;
       }
       else if(c<1) {
        this.day=1;
       }
       else {
        this.day=c;
       }
      }
      else {
      if(b==2) {
       if(a%4!=0&&c>28) {
        this.day=28;
       }
       else if(a%4!=0&&c<1) {
        this.day=1;
       }
       else if(a%4==0&&c>29) {
        this.day=29;
       }
       else if(a%4==0&&c<1) {
        this.day=1;
       }else {
        this.year=a;
        this.month=2;
        this.day=c;
       }
      }
      else if(b==1||b==3||b==5||b==7||b==8||b==10||b==12) {
       if(c<1) {
        this.day=1;
        this.year=a;
        this.month=b;
       }
       else if(c>31) {
        this.day=31;
        this.year=a;
        this.month=b;
       }
       else {
        this.day=c;
        this.month=b;
        this.year=a;
       }
      }
      else {
       if(c<1) {
        this.day=1;
        this.year=a;
        this.month=b;
       }
       else if(c>30) {
        this.day=30;
        this.year=a;
        this.month=b;
       }
       else {
        this.day=c;
        this.month=b;
        this.year=a;
       }
      }
     }
      System.out.println("Constructor run ");
      }
     Date(){
      this.year=1;
      this.day=1;
      this.month=1;
      System.out.println("Constructor run ");
     }
     Date(Date a){
      this.year=a.year;
      this.month=a.month;
      this.day=a.day;
      System.out.print("CopyConstructor run ");;
     }
     public void finalize() {
      System.out.print("Destructor run ");
     }
     public void setYear(int a) {
      this.year=a;
     }
     public void setMonth(int a) {
      this.month=a;
      if(this.month>12)
            {
                this.month=12;
            }
            if(this.month<1)
            {
                this.month=1;
            }
     }
     public void setDay(int a) {
      this.day=a;
      if(this.day<1)
            {
       this.day=1;
            }
           if(this.day>31)
           {
            this.day=31;
           }
           if(this.month==2)
           {
               if(isLeapYear()==1)
               {
                   if(this.day>30)
                   {
                    this.day=29;
                   }
               }
               else{
                    if(this.day>30)
                    {
                     this.day=28;
                    }
               }
           }
     }
     public int getYear() {
      return this.year;
     }
     public int getMonth() {
      return this.month;
     }
     public int getDay() {
      return this.day;
     }
     public void tomorrow() {
      if(this.day==31)
            {
                if(this.month==12){this.year++;this.month=1;this.day=1;}
                else{this.month++;this.day=1;}
            }
            else if(this.day==30&&(this.month==4||this.month==6||this.month==9||this.month==11||this.month==8))
            {
             this.day=1;
             this.month++;
            }
            else if(this.month==2)
            {
                if(isLeapYear()==1)
                {
                    if(this.day==29)
                    {this.day=1;
                    this.month++;}
                    else{this.day++;}
                }
                else{
                    if(this.day==28)
                    {
                     this.day=1;
                     this.month++;
                    }
                }
                }
            else{this.day++;}
     }
     public void yesterday() {
      if(this.day==1){
                if(this.month==1){
                 this.year--;
                 this.month=1;
                 this.day=31;
                }
                else if(this.month==2||this.month==4||this.month==6||this.month==9||this.month==11){
                 this.month--;
                 this.day=31;
                }
                else if(this.month==3)
                {
                 this.month--;
                    if(isLeapYear()==1){this.day=29;}
                    else{this.day=28;}
                }
                else if(this.month==5||this.month==7||this.month==10||this.month==12){
                 this.month--;
                 this.day=30;
                }
             }
             else{
              this.day--;
            
     }
    }
     public void chineseFormat() {
      System.out.print(this.year+"年"+this.month+"月"+this.day+"日 ");
     }
     public void americaformat() {
      System.out.print(monthName[this.month-1]+" "+this.day+","+this.year+" ");
     }
     public int nyear(int year) {
       if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
              return 366;
          else
              return 365;
     }
     public int nmonth(int y,int m) {
      if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
             return 31;
         else if (nyear(y) == 366 && m == 2)
             return 29;
         else if (nyear(y) == 365 && m == 2)
             return 28;
         else
             return 30;
     }
     public int GetDays(int year,int month) {
       int i = 0;
          int sum = 0;
          if (year>1990)
          for (i = 1990; i < year; i++)
              sum += nyear(i);
          if (month>1)
          for (i = 1; i < month; i++)
          {
              sum += nmonth(year, i);
          }
          return sum;
     }
     public void printMonthCalendar() {
      int i, j, sum, daycount;
         while (this.year+this.month!=0)
         {
             sum = GetDays(this.year, this.month);
             day = (sum + 1) % 7;  //得出一个月第一行前要空几格
             daycount = nmonth(this.year, this.month);   //算出这一个月的天数
             System.out.print(weekName[0]+weekName[1]+weekName[2]+weekName[3]+weekName[4]+weekName[5]+weekName[6]+" ");
             for (i = 0; i < day; i++)
                 {
            
             System.out.print("   ");
                 }
             for (i = 1, j = day + i; i <= daycount; i++, j++)
             {
             System.out.printf("%3d",i);
                 if (j % 7 == 0)
             System.out.print(" ");
             }
             System.out.print(" ");
             year=0;
             month=0;
         }
     }
     int  weekDay(){
     int a,b,c;
     a=GetDays(this.year,this.month);
     b=a+this.day-1;
     c=b%7;
     return c;
     }
    }
    以下是主函数代码
    package a20200724;
    import  java.util.Scanner;
    public class main {
     public static void main(String[] arg) {
      int year,month,day;
         Date d1=new Date();
         Date d2=new Date(d1);
         Scanner y = new Scanner(System.in);
         Scanner m = new Scanner(System.in);
         Scanner d = new Scanner(System.in);
         year = y.nextInt();
         month = m.nextInt();
         day = d.nextInt();
         d1.setYear(year);
         d1.setMonth(month);
         d1.setDay(day);
         d1.yesterday();
         d1.chineseFormat();
         Scanner y1 = new Scanner(System.in);
         Scanner m1 = new Scanner(System.in);
         Scanner D1 = new Scanner(System.in);
         year = y1.nextInt();
         month = m1.nextInt();
         day = D1.nextInt();
         d2.setYear(year);
         d2.setMonth(month);
         d2.setDay(day);
         d2.tomorrow();
         d2.americaformat();
         d2.printMonthCalendar();
         d1=null;
         d2=null;
         System.gc();
    }
    }
     
    以下是运行结果截图
  • 相关阅读:
    CF-1102E-Monotonic Renumeration
    判断一颗二叉树是否为二叉搜索树
    Trie树的插入,查前缀,查单词,删前缀和删单词。
    poi 生成图片到excel
    poi 生成excel,最简单代码
    poi 实战代码---导出Excel(根据模板导出)
    共分为六部完成根据模板导出excel操作
    导入报版本不匹配问题
    ftp工具类
    关于获取路径path
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/13373207.html
Copyright © 2020-2023  润新知