A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾欢欢 中级黑马   /  2014-5-9 08:54  /  1506 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾欢欢 于 2014-5-9 23:29 编辑

import java.util.*;
public class u4 {
public static void main(String[] args){
  Scanner in=new Scanner(System.in);
  System.out.println("请输入年份");
  int year=in.nextInt();
  System.out.println("请输入月份");
  int month=in.nextInt();
     int sum=0;
     int u=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 I=1;I<month;I++){
      if(I==2){
       if(year%4==0&&year%400==0||year%100!=0){
        sum+=29;
       }else{
        sum+=28;
       }
      }else if(I==4||I==6||I==9||I==11){
       sum+=30;
      }else{
       sum+=31;
      }
     }
     /*
     sum+=7;
     System.out.println("1900年1月1日到2016年5月7日一共:"+sum+"天");
     System.out.println("2016年5月7日为星期"+sum%7);
     */
     int wekday=sum%7;
     System.out.println("日\t一\t二\t三\t四\t五\t六");
     for(int i=1;i<=wekday;i++){
      System.out.print("\t");
     }
     if(month==2){
      if(year%4==0&&year%400==0||year%100!=0){
       u=29;
      }else{
       u=28;
      }
     }else if(month==4||month==6||month==9||month==11){
      u=30;
     }else{
      u=31;
     }
     for(int i=1;i<=u;i++){
      if(sum%7==6){
       System.out.print(i+"\n");
      }else{
       System.out.print(i+"\t");
      }
      sum++;
     }
    }
}

1 个回复

倒序浏览
  1. package test;

  2. import java.util.*;
  3. /**
  4. * 输入年月,返回当月的日历
  5. * @author asus
  6. *
  7. */
  8. public class MonthTest {

  9.         public static void main(String[] args) {
  10.                 Scanner in = new Scanner(System.in);
  11.                 System.out.println("请输入年份");
  12.                 int year = in.nextInt();
  13.                 System.out.println("请输入月份");
  14.                 int month = in.nextInt();
  15.                 long sum = 0;//sum可能会是个大数这里用long型保存比较好
  16.                 int u = 0;//用来保存当月的天数
  17.                 boolean leapYear = false; //标志位,是否闰年的标志
  18.                 //计算从1900年到输入的年份(不含当年)之间的天数
  19.                 for (int i = 1900; i < year; i++) {
  20.                         //区分当年是否是闰年
  21.                         if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
  22.                                 sum += 366;
  23.                                 leapYear = true;
  24.                         } else {
  25.                                 sum += 365;
  26.                                 leapYear = false;
  27.                         }
  28.                 }
  29.                 //计算从1月份到输入的月份(不含当月)之间的天数
  30.                 for (int I = 1; I < month; I++) {
  31.                         if (I == 2) {
  32.                                 if (leapYear) {
  33.                                         sum += 29;
  34.                                 } else {
  35.                                         sum += 28;
  36.                                 }
  37.                         } else if (I == 4 || I == 6 || I == 9 || I == 11) {
  38.                                 sum += 30;
  39.                         } else {
  40.                                 sum += 31;
  41.                         }
  42.                 }
  43.                 /*
  44.                  * sum+=7; System.out.println("1900年1月1日到2016年5月7日一共:"+sum+"天");
  45.                  * System.out.println("2016年5月7日为星期"+sum%7);
  46.                  */
  47.                 //计算输入的年月的上一个月的最后一天是周几
  48.                 long wekday = sum % 7;
  49.                 System.out.println("日\t一\t二\t三\t四\t五\t六");
  50.                 //使用/t占位,找到输入的月份的第一天的位置
  51.                 for (int i = 0; i <= wekday; i++) {
  52.                         System.out.print("[]\t");
  53.                 }
  54.                 //获取输入月份的天数
  55.                 if (month == 2) {
  56.                         if (leapYear) {
  57.                                 u = 29;
  58.                         } else {
  59.                                 u = 28;
  60.                         }
  61.                 } else if (month == 4 || month == 6 || month == 9 || month == 11) {
  62.                         u = 30;
  63.                 } else {
  64.                         u = 31;
  65.                 }
  66.                 //将当月的日期与星期对应
  67.                 for (int i = 1; i <= u; i++) {
  68.                         sum++;
  69.                         if (sum % 7 == 6) {
  70.                                 System.out.print(i + "\n");
  71.                         } else {
  72.                                 System.out.print(i + "\t");
  73.                         }
  74.                         
  75.                 }
  76.         }
  77. }
复制代码


程序做了一些小改动,一个是在后两次判断是否为闰年的时候条件错了,一个是在算当月的第1天是周几的时候少算了1天
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马