评论

耿老师教你学Java:各个日期自出现最多的是星期几(之一)

一、程序完成的目标

本文给出的程序完成下列两件事:

1.两个日期之间,比如1949-10-01至2024-11-16,各个日期自出现最多的是星期几(之一)?

例如,输出(输出时,星期7表示星期日):

1号,出现最多的是星期5,出现了130次。

2号,出现最多的是星期6,出现了130次。

3号,出现最多的是星期7,出现了130次。

...

28号,出现最多的是星期6,出现了129次。

29号,出现最多的是星期7,出现了121次。

30号,出现最多的是星期3,出现了119次。

31号,出现最多的是星期4,出现了76次。

2.输出各个日期出现的星期一至星期日的次数(输出时,星期7表示星期日):

例如,

1号:

星期1:128次 星期2:129次 星期3:129次 星期4:129次 星期5:130次 星期6:128次 星期7:129次

2号:

星期1:129次 星期2:128次 星期3:129次 星期4:129次 星期5:129次 星期6:130次 星期7:128次

3号:

星期1:128次 星期2:129次 星期3:128次 星期4:129次 星期5:129次 星期6:129次 星期7:130次

...

28号:

星期1:129次 星期2:129次 星期3:129次 星期4:129次 星期5:128次 星期6:129次 星期7:128次

29号:

星期1:120次 星期2:121次 星期3:120次 星期4:121次 星期5:121次 星期6:121次 星期7:121次

30号:

星期1:119次 星期2:117次 星期3:119次 星期4:117次 星期5:118次 星期6:118次 星期7:118次

31号:

星期1:75次 星期2:76次 星期3:75次 星期4:76次 星期5:74次 星期6:75次 星期7:75次

二、代码与效果

Day类封装日期号码和该号码出现的星期一至星期日次数

publicclassDay{ intday = 1; //日期号码,取值 1,2...31 intmaxWeek = 0; //day日期出现最多的星期 publicintweekCounts[]= newint[ 7]; //weekCounts[i]是day日出现星期i+1的次数 //例如weekCounts[0]是day日出现星期1的次数 publicDay( intnumber ) { day = number; } publicDay( ) { day = 1; } intmaxWeekCounts( ) { intmax = 0; for( inti= 0;i<weekCounts.length;i++){ if(weekCounts[i]>=max){ max = weekCounts[i]; maxWeek = i+ 1; } } returnmax; } }

主类

import java.time.LocalDate; import java.time.DayOfWeek; publicclassE{ publicstaticvoidoutWeekCounts( LocalDate start,LocalDate end) { Day [] date = newDay[ 31]; //每个单元是日期 for( inti= 0;i<= 30;i++){ date[i] = newDay(i+ 1); //1-31号的Day对象 } for(LocalDate localDate = start;localDate.isBefore(end);localDate=localDate.plusDays( 1)){ intday = localDate.getDayOfMonth; //返回日期中的日值(1-31) DayOfWeek week = localDate.getDayOfWeek ; //返回日期中的星期(星期一至星期日) intn = week.getValue; //返回1-7,1表示星期一...7表示星期日 (date[day -1].weekCounts[n -1])++; } System. out.println( "输出时,星期7表示星期日"); for( inti= 0;i<date.length;i++){ intmax = date[i].maxWeekCounts; System. out.println(date[i].day+ "号,出现最多的是星期" +date[i].maxWeek+ ",出现了"+max+ "次。"); } for( intnumber= 0;number< 31;number++){ System. out.println(date[number].day+ "号:"); for( inti= 0;i<date[number].weekCounts.length;i++){ System. out.print( " 星期"+(i+ 1)+ ":"+date[number].weekCounts[i]+ "次"); } System. out.println( ""); } } publicstaticvoidmain( String args[]) { LocalDate start = LocalDate.of( 1949, 10, 1) ; //初始时间 LocalDate end = LocalDate.of( 2024, 11, 16) ; //结束时间 System. out.println(start+ "至"+end+ "各个日期自出现最多的星期:"); outWeekCounts(start,end); } }

返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()