万年历

Posted Peerless丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万年历相关的知识,希望对你有一定的参考价值。

打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一),要求:

(1)编写一个方法判断闰年;

(2)编写一个方法判断某年某月有多少天;

(3)编写一个方法计算某年某月前距离1900年1月1日的总天数;(4)编写一个输出某年某月日历的方法;

(5)编写一个测试方法。

  1 import java.util.*;
  2 public class 万年历 {
  3     public static void main(String[] args){
  4         System.out.println("请输入年份");
  5         Scanner input=new Scanner(System.in);
  6         int y=input.nextInt();
  7         System.out.println("请输入月份");
  8         int m=input.nextInt();
  9         if(runnian(y)==1){
 10         System.out.println(y+"是闰年");
 11         }
 12         else{
 13         System.out.println(y+"不是是闰年");
 14         }    
 15         System.out.println(y+"年"+m+"月有"+panduanday(y,m)+"天");
 16         System.out.println("距离1900年1月1日有"+juli(y,m)+"天");
 17         System.out.println(y+"年"+m+"月的日历");
 18         rili(y,m);        
 19     }
 20     public static int runnian(int y){
 21         if((y%4==0&&y%100!=0)||y%400==0)
 22         {
 23             return 1;
 24             
 25         }
 26         else
 27         {
 28             return 0;
 29             
 30         }
 31     }
 32     public static int panduanmonth(int y,int m){
 33         if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
 34         {
 35             return 0;
 36         }
 37         if(m==4||m==6||m==9||m==11)
 38         {
 39             return 1;
 40         }
 41      else
 42         {
 43             if(runnian(y)==1){
 44                 return 2;
 45             }
 46             else{
 47                 return 3;
 48             }
 49         }
 50     }
 51     public static int panduanday(int y,int m){
 52         int day=0;
 53         if(panduanmonth(y,m)==0)
 54         {
 55             day=31;
 56         }
 57         if(panduanmonth(y,m)==1)
 58         {
 59             day=30;
 60         }
 61         if(panduanmonth(y,m)==2)
 62         {
 63             day=29;
 64         }
 65         if(panduanmonth(y,m)==3)
 66         {
 67             day=28;
 68         }
 69         return day;
 70     }
 71     public static int juli(int y,int m){
 72         int a=0;
 73         for(m=m-1;m>=1;m--){
 74             a=a+panduanday(y,m);
 75         }
 76         for(y=y-1;y>=1900;y--){
 77             if(runnian(y)==1)
 78             {
 79                 a=a+366;
 80             }
 81             else{
 82                 a=a+365;
 83             }
 84         }
 85         return a;
 86         
 87         
 88     }
 89     public static  void rili(int y,int m ){ 
 90         int a,c,i,j;
 91         int b=1;
 92         String weeks[]= { "日", "一", " 二", "三", " 四", " 五", " 六" };
 93         for(i=0;i<7;i++){
 94             System.out.print(weeks[i]+"\t");    
 95             if(i==6){
 96                 System.out.println("  ");    
 97             }
 98         }
 99         int day1[][]=null;
100         day1=new int[6][7];
101       
102         if(y<1900){
103             System.out.println("不在查询范围之内");
104         return;
105         }
106         a=juli(y,m)%7+1;
107         c=panduanday(y,m);
108         for(i=0;i<6;i++){
109             for(j=0;j<7;j++){
110                 if(i==0&&j<a)
111                 {
112                     day1[i][j]=0;
113                 }
114                 if(i==0&&j>=a)
115                 {
116                 day1[i][j]=b;
117                 b++;
118                 }
119                 if(i!=0)
120                 {
121                 day1[i][j]=b;
122                 b++;
123                 }    
124             }
125         }
126         for(i=0;i<6;i++){
127             for(j=0;j<7;j++){
128                 if(day1[i][j]>c||day1[i][j]==0)
129                 {
130                     System.out.print(" "+"\t");
131                 }
132                 else{
133                 System.out.print(day1[i][j]+"\t");    
134                 }
135             }
136             System.out.println(" ");
137         }
138         
139         
140     }
141 }

 

以上是关于万年历的主要内容,如果未能解决你的问题,请参考以下文章

算法,java代码实现打印万年历

知识类API调用的代码示例合集:驾考题库ISBN书号查询万年历查询等

STC89c52实现万年历

STC89c52实现万年历

TM32的电子钟万年历LCD1602的Proteus仿真 (代码+仿真+原理图+PCB+参考报告)

前端:运用js制作一个万年历程序