完成万年历的制作需要用到数组、循环等知识。

编程计算输入的月份距离1900年1月1日的天数,求出当前月之前的总天数(不包含当前输入月分的天数,)

编程计算输入月份的第一天是星期几,(公式:星期几=1+天数差%7)。

import java.util.Scanner;
public class Calendar{

  public static void main(String[] args){

    int year;
    int month;
    int totaldays=0;

    Scanner sc=new Scanner(System.in);

    System.out.println("请输入年");
    year=sc.nextInt();
    System.out.println("请输入月");
    month=sc.nextInt();


    //计算年的总天数
    for(int i=1900;i<year;i++){
      if((i%400==0)||(i%4==0&&i%100!=0)){
        totaldays+=366;
      }else{
        totaldays+=365;
      }
    }

    //距离1900年1月1好的总天数
    totaldays+=monthdays(month,year);
    //System.out.println(totaldays);
    System.out.println("-------------"+year+"年"+month+"月日历为---------------");
    //开头
    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");

    //该月第一天是星期几,星期几前面就空几格
    int x=1+totaldays%7;

    if(x==7){
      x=0;
    }
    for(int i=0;i<x;i++){
      System.out.print(" \t");
    }

    int days=monthday(month,year);

    int i=1;
    while(i<=days){
      System.out.print(i+"   \t");
      if((i+x)%7==0){
        System.out.println();
      }
      i++;
    }

  }
  //月份总天数
  public static int monthdays(int month,int year){
    int totaldays=0;
    for(int i=1;i<month;i++){
      totaldays+=monthday(i,year);
    }
    return totaldays;
  }

  //某月天数
  public static int monthday(int month,int year){

    if((year%400==0)||(year%4==0&&year%100!=0)){
      int[] arr={0,31,29,31,30,31,30,31,31,30,31,30,31};
      return arr[month];
    }else{
      int[] arr={0,31,28,31,30,31,30,31,31,30,31,30,31};
      return arr[month];
    }

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

02-02 18:45
查看更多