Java_日历生成(Lab 4_Exercise 5)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 06:31   31   0

题目:



解答:

import java.util.Scanner;

public class Exercise_5 {
 static int left_day=0;
 
 public static boolean year_judge(int year) {
  if(year%100==0) {
   if(year%400==0) return true;
   else return false;
  }
  else {
   if(year%4==0)return true;
   else return false;
  }
  
 }
 
 public static int total_day_judge(int year,String month) {
  int total_day=0;
  boolean mark=year_judge(year);
  
  switch(month) {
  case"January":total_day=31;break;
  case"February":{
   if(mark==true)total_day=29;
   if(mark==false)total_day=28;
   break;
  }
  case"March":total_day=31;break;
  case"April":total_day=30;break;
  case"May":total_day=31;break;
  case"June":total_day=30;break;
  case"July":total_day=31;break;
  case"August":total_day=31;break;
  case"September":total_day=30;break;
  case"October":total_day=31;break;
  case"November":total_day=30;break;
  case"December":total_day=31;break;
  }
  
  return total_day;
  
 }
 
 public static void month_calender_generator(int year,String month,int first_day) {
  int total_day=total_day_judge(year,month);
  int we_day=1;
  
  System.out.printf("\t\t%9s%8s\n",month,year);
  System.out.printf("---------------------------------------------------\n");
  System.out.printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
  
  for(int i=1;i<=first_day;i++) {
   System.out.printf("   \t");
   we_day++;
  }
  
  for(int m=1;m<=total_day;m++) {
   if(we_day==7) {
    System.out.printf("%3s\t",m);
    System.out.println();
    we_day=1;
   }
   else {
    System.out.printf("%3s\t",m);
    we_day++;
   }
   switch(we_day) {
   case 1:left_day=0;break;
   case 2:left_day=1;break;
   case 3:left_day=2;break;
   case 4:left_day=3;break;
   case 5:left_day=4;break;
   case 6:left_day=5;break;
   case 7:left_day=6;break;
   }
   
  }
  System.out.println("\n");
 }

 public static void main(String[] args) {
  int year=0,first_day=0;
  String month[]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
  Scanner input=new Scanner(System.in);
  
  System.out.printf("Enter year:");
  
  year=input.nextInt();
  
  System.out.printf("Enter first of the year:");
  
  first_day=input.nextInt();
  
  month_calender_generator(year,month[0],first_day);
  
  for(int mon=1;mon<12;mon++) {
   month_calender_generator(year,month[mon],left_day);
   
  }

 }

}


PS.由于时间仓促,没有给程序加注释,敬请原谅。
另外,这个程序经过了多次修改,结构和算法上存在不足与冗余,大家有什么建议可以私信我或者在评论区留言。
最后,谢谢各位的浏览!!




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP