一个日历系统

import java.util.Scanner;

public class CalendarText {

 public static int year, weekday, month, flag;

 public int Inputyear() {
  Scanner s = new Scanner(System.in);
  System.out.println("请输入一个年份:");
  String str = s.nextLine().trim();
  while (true) {
   if (str.matches("//d{4}")) {
    year = Integer.parseInt(str);
    System.out.println(year);
    return year ;
   }
   System.out.println("请输入一个年份:");
   str = s.nextLine().trim();
  }

 }

 public boolean isLeapYear(int year) {
  return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
 }

 public int yearOfFistDay(int y) {
  long lo = y * 365;
  for (int i = 1; i < y; y++) {
   if (this.isLeapYear(y))
    lo += 1;
  }

  return (int) (lo % 7);
 }

 public void start() {
  System.out.println("=======================================");
  if(this.isLeapYear(year)){
   System.out.println("此年是闰年");
  }
  System.out.println("           " + year + "年");
 }

 public int getMonth(int month) {
  int monthday = 0;

  switch (month) {
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
   monthday = 31;
   break;
  case 4:
  case 6:
  case 9:
  case 11:
   monthday = 30;
   break;
  case 2:
   if (this.isLeapYear(year)) {
    monthday = 29;
   } else {
    monthday = 28;
   }
   break;

  }
  return monthday;
 }

 public void indexMonth() {

  for (int i = 1; i <= 12; i++) {
   month = i;

   System.out.println(month + "月");
   System.out.println("日     一     二     三     四     五     六");
   int k = this.getMonth(month);

   for (int j = 0; j <weekday; j++) {
    System.out.print("      ");
   }
   for (int day = 1; day <= k; day++) {
    if (day < 10) {
     System.out.print(day + "     ");
    } else {
     System.out.print(day + "    ");
    }
    weekday = (weekday + 1) % 7;
    if (weekday == 0) {
     System.out.println();
    }

   }
   System.out.println();

  }
 }

 public static void main(String[] args) {
  CalendarText ct = new CalendarText();
  ct.Inputyear();
  weekday = ct.yearOfFistDay(year);
  ct.start();
  ct.indexMonth();

 }

}
 

 

 

这个程序自己弄完之后发现那个效率很低很低……

计算一年的头一天是周几 的时候运算数据很庞大,大家有没有更好的方法解决这个问题??

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值