概述
按照周一到周日为一行的顺序打印本月日期,并将当天的日期用"*"表示。
此题意在加深学习者对于java日期类的综合理解。
思路
1.使用LocalDate类获取当前日期,并获取月份和日期数据。
2.使用minusDays()方法巧妙获取本月一号日期。
3.控制输出格式,并使用plusDays()方法进行日期迭代,用日期的月份数据控制循环条件。
代码
import java.time.LocalDate;
public class Main {
public static void main(String[] args){
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
int day = date.getDayOfMonth();
System.out.println("Mon Tue Wen Thu Fri Sat Sun");
date = date.minusDays(day-1);
int week = date.getDayOfWeek().getValue();
for(int i = 1; i < week; i++)
System.out.print(" ");
while(date.getMonthValue() == month){
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth() == day)
System.out.print("*");
else
System.out.print(" ");
System.out.print(" ");
date = date.plusDays(1);
if(date.getDayOfWeek().getValue() == 1)
System.out.println();
}
}
}
Mon Tue Wen Thu Fri Sat Sun
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16* 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
进程已结束,退出代码0
经验总结
1.LocalDate类可以很方便的处理日期相关的计算,可以获取年月日星期等信息。
2.获取年月日的方法的返回值均为int——getYear()、getMonthValue()、getDayOfMonth()。
3.getDayOfWeek()方法返回的类型是DayOfWeek不是int,获取数值还需要再使用getValue()方法。
4.可以使用minusDays()和plusDays()方法来对LocalDate日期进行迭代。