【JAVA】15 实例:和壁虎老师一起做的日历——2014年2月12日

这个是在51自学网上和壁虎老师学的,所以原理什么注释不多,亲自己看吧~


import java.util.Scanner;

public class rili {
      
       public static void main(String []args){
            
             @SuppressWarnings("resource" )
            Scanner in = new Scanner(System.in);
            
            System. out.println("请输入年份" );
             int year=in.nextInt();
            System. out.println("请输入月份" );
             int month=in.nextInt();       
             //求1900年1月1日到2016年9月1日相隔多少天
                   //求1900年到2015年的总天数
             int sum=0;
             for(int i=1900;i<year;i++){
                   if(i%4==0&&i%100!=0||i%400==0){
                        sum+=366;
                  } else{
                        sum+=365;
                  }
            }
                  
                   //求总天数的天数
             for(int j=1;j<month;j++){
                   if(j==2){
                         if(year%4==0&&year%100!=0||year%400==0){
                              sum+=29;
                        } else{
                              sum+=28;
                        }
                  } else{
                         if(j==4||j==6||j==9||j==11){
                              sum+=30;
                        } else{
                              sum+=31;
                              }
                  }
            }
                  
            sum+=1;
            
             //System.out.println(sum%7);
            
             //求算星期几
             int weekday=sum%7;
            
             //判断这个月有多少天
             int days=0;
             if(month==2){
                   if(year%4==0&&year%100!=0||year%400==0){
                        days=29;
                  } else{
                        days=28;
                  }
            } else{
                   if(month==4||month==6||month==9||month==11){
                        days=30;
                  } else{
                        days=31;
                        }
            }
            
             //打印日历表头
            System. out.println("日\t一\t二\t三\t四\t五\t六" );
             for(int i=1;i<=weekday;i++){
                  System. out.print("\t" );
            }

             //打印日历中数据
            
             for(int i=1;i<=days;i++){
                   if(sum%7==6){
                        System. out.print(i+"\n" );
                  } else{
                        System. out.print(i+"\t" );
                  }
                  sum++;
            }
            
            
      }
}
      

然后还有一份我用面向对象改写的(刚学了类的概念,照猫画虎= =

import java.util.Scanner;

public class riLiGaiXie {
      
       public static void main(String []args){
            
             @SuppressWarnings("resource" )
            Scanner in = new Scanner(System.in);
            
            System. out.println("请输入年份" );
             int year=in.nextInt();
            System. out.println("请输入月份" );
             int month=in.nextInt(); 
            
            Time rili = new Time(year,month);
            rili.print(rili.sum(),rili.month());
            
      }
      
       static class Time{
            
             int month ;
             int year ;
             int sum ;
            
             public Time(int year,int month){
                   this.year =year;
                   this.month =month;
            }
            
             //求总天数的天数,并计算该月1日是星期几
             public int sum(){
                  
                   for(int i=1900;i<year;i++){
                         if(i%4==0&&i%100!=0||i%400==0){
                               this.sum +=366;
                        } else{
                               this.sum +=365;
                        }
                  }
                  
                   for(int j=1;j<month;j++){
                         if(j==2){
                               if(year %4==0&&year%100!=0|| year%400==0){
                                     this.sum +=29;
                              } else{
                                     this.sum +=28;
                              }
                        } else{
                               if(j==4||j==6||j==9||j==11){
                                     this.sum +=30;
                              } else{
                                     this.sum +=31;
                              }
                        }
                  }
            
                   sum+=1;
      
                   //System.out.println(sum%7);
      
                   //取模求算星期几
                   return sum %7;
            }
            
             //判断这个月有多少天
             public int month(){
                   if(month ==2){
                         if(year %4==0&&year%100!=0|| year%400==0){
                               return 29;
                        } else{
                               return 28;
                        }
                  } else{
                         if(month ==4||month==6|| month==9||month ==11){
                               return 30;
                        } else{
                               return 31;
                        }
                  }
            }
            
             //打印日历
             public void print(int weekday, int days){
                   //打印日历表头
                  System. out.println("日\t一\t二\t三\t四\t五\t六" );
                   for(int i=1;i<=weekday;i++){
                        System. out.print("\t" );
                  }

                   //打印日历中数据
                  
                   for(int i=1;i<=days;i++){
                         if(sum %7==6){
                              System. out.print(i+"\n" );
                        } else{
                              System. out.print(i+"\t" );
                        }
                         sum++;
                  }
            }
      }
}
【JAVA】15 实例:和壁虎老师一起做的日历——2014年2月12日