程序要求
将当前月份按图示输出,当前日加*表示,以及给定日期相应是星期几。
程序设计思路
1、首先构造一个日历对象,并且用当前的日期和时间进行初始化
LocalDate date = LocalDate.now();
2、获取当前月和日
int month = date.getMonthValue();
int today = date.getDaysOfMonth();
3、将Date设置为这个月第一天,并得到这一天为周几
miusDays() :是减去当前天数,假定今天是10号,第一天是1号,想得到1,就要用10-(10-1),10-1就是day-1
weekday : 将变量weekday设置为Dayweek类型的对象。
getValue() : 调用这个对象的方法来得到周几的一个数值。
date = date.minusDays(today - 1);//minusDays是减去当前天数
DayOfWeek weekday = date.getDayOfweek();
int value = weekday.getValue();//1=周一,以此类推
4、日历第一行需要缩进,及将1号与星期对应
value:为之前获得1号的星期
System.out.println(" 周日 周一 周二 周三 周四 周五 周六");
for(int i = 1;i<value;i++ ){
System.out.print(" ");
}
5、打印日历主体
1、当month等于本月,date就继续迭代
2、当为周日时进行换行,表示一周完成
while(date.getMonthVaule() == month){
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth() == today)
System.out.print("*");
else
date = date.plusDays(1);//每次循环date+1
if(date.getDayOfWeek.getVaule()==7)
System.out.println();
}
完整程序
package tast;
import java.time.*;
class test {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
int today = date.getDayOfMonth();
date = date.minusDays(today - 1);// 将date设置为这个月的第一天,minusDays减去指定天数
DayOfWeek weekday = date.getDayOfWeek();// 得到这一天为周几
int value = weekday.getValue(); // 1为周一
System.out.println(" 周日 周一 周二 周三 周四 周五 周六");
for (int i = 1; i <= value; i++) {
System.out.print(" ");
}
while (date.getMonthValue() == month) {
System.out.printf("%3d", date.getDayOfMonth());
if (date.getDayOfMonth() == today)
System.out.print("*");
else
System.out.print(" ");
date = date.plusDays(1);
if (date.getDayOfWeek().getValue() == 7)
System.out.println();
}
if (date.getDayOfWeek().getValue() != 7)
System.out.println();
}
}