一、程序完成的目标
本文给出的程序完成下列两件事:
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);
}
}
返回搜狐,查看更多
责任编辑: