当前位置:编程学习 > JAVA >>

计算闰年、平年的JAVA计算代码

import java.util.*;
public class Date {
 public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    System.out.print("请选择年份:");
    int year=input.nextInt();
    System.out.print("请选择月份:");
    int month=input.nextInt();
    boolean isRen;
   if(year%4==0&&year%100!=0||year%400==0){
    System.out.print(year+"闰年");
    isRen=true;
   }else{
    System.out.print(year+"平年");
    isRen=false;
   }
    int day=0;
   switch(month){
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
     day=31;
    break;
    case 4:
    case 6:
    case 9:
    case 11:
     day=30;
    break;
    default:
     if(isRen==true){
      day=29;
     }else{
      day=28;
     }
    break;
   }
   System.out.println(year+"年"+day+"天");
     int sum=0;
   for(int i=1990;i<year;i++){
    if(i%4==0&&i%100!=0||i%400==0){
     sum+=366;
    }else{
     sum+=365;
    }
   }
   System.out.print("去年到今天一共"+sum+"天");
   for(int i=1;i<month;i++){
    if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
     sum+=31;
    }else if(i==4||i==6||i==9||i==11){
     sum+=30;
    }else{
     if(isRen==true){
      sum+=29;
     }else{
      sum+=28;
     }
    }
   }
   System.out.print("到上个月底"+sum+"天");
    int dw=sum%7+1;
   System.out.print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
   for(int i=1;i<dw;i++){
    System.out.print("\t");
   
    dw++;
   } for(int i=1;i<=day;i++){
    System.out.print(i+"\t");
    if(dw%7==0)
     System.out.println();
  }
    
 }

}

补充:int dw=sum%7+1;
   System.out.print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
   for(int i=1;i<dw;i++){
    System.out.print("\t");
   
    dw++;
   } for(int i=1;i<=day;i++){
    System.out.print(i+"\t");
    if(dw%7==0)
     System.out.println();
  }
    
 }

}
这个代码的最后这里是错的~也是我最不明白的地方~请教各位JAVA编程的强者们~帮我解释它~和修正它

追问:我不介绍你解释的解说~但是很介绍你不详细的解说:请你详细的解说给我~这样我会非常的感谢你~!

请详细的解释这闰年的计算给我吧~拜托了~!

答案:    int dw=sum%7+1;
   System.out.print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
   for(int i=1;i<dw;i++){
    System.out.print("\t");
   
    dw++;
   } for(int i=1;i<=day;i++){
    System.out.print(i+"\t");
    if(dw%7==0)
     System.out.println();
  }
这行代码是循环打印效果的,它包含了星期和对应的日期输出格式.

这里很多地方都是老套路,最重要的一句核心就是下边这句话:

    int dw=sum%7+1;

它是一个公式,起始时间好像是以1944年还是1940年开始计算的.这里的这个公司你可以藏试着改一下

比如

    int dw=sum%7+2;

    int dw=sum%7+3;

等等,你或许就能看到其中的不同了.

公式的含义呢是:

当前年的该月份余一周后打印多少个空格后才开始打印日志.

在重复一下.该公式好像是以1944年海是1940年为计算标准作的公式.这里我忘了.印象中是1940年.

不过不用太过纠结这些,这道题考核的是for循环和制表符的使用以及怎样利用公式达到理想效果.

编程其实有很多时候跟数学是直接挂钩的.

希望能对你有所帮助.

不知道你是要问什么?还是分享代码给我们。

上一个:求Java的参数 .急……
下一个:关于JAVA析构函数不存在的原因

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,