Author:天添豆浆 计算机科学与技术专业,迷摇滚的理科男 新手村码农,第一篇博客,记录成长
你没有见过的JAVA动态日历(船新版本)
前言:话不多说看看代码:
输出结果(截图):反思:写在最后:PS:
老标题党了…基础语法不值一提,重在记录学习过程。
前言:
显示方法和视觉排版跟以前的动态日历一样,都是在控制台打印输出。以前没有学习Calendar类及其常用方法,是自定义方法,从底层算法逻辑判断平闰年、月份天数。本题核心内容:“本月第一天是星期几?”的实现逻辑也大不相同。但是最终排版打印显示界面的代码逻辑相同。
话不多说看看代码:
import java
.util
.Calendar
;
public class MyCalendar {
private int year
;
private int month
;
public MyCalendar(int year
, int month
) {
this.year
= year
;
this.month
= month
;
}
public void showCalendar() {
Calendar c
= Calendar
.getInstance();
c
.set(Calendar
.YEAR
, year
);
c
.set(Calendar
.MONTH
, month
-1);
c
.set(Calendar
.DAY_OF_MONTH
, 1);
int weekDay
= c
.get(Calendar
.DAY_OF_WEEK
) - 1;
if(weekDay
== 0) {
weekDay
= 7;
}
int days
= c
.getActualMaximum(Calendar
.DAY_OF_MONTH
);
System
.out
.println("==================【船新版本动态日历】==================");
System
.out
.println("--------------------【"+ year
+ "年" + month
+ "月" + "】-------------------");
System
.out
.println("一\t二\t三\t四\t五\t六\t日");
System
.out
.println("--------------------------------------------------");
int count
= 0;
for (int i
= 1; i
< weekDay
; i
++) {
System
.out
.print("\t");
count
++;
}
for (int j
= 1; j
<= days
; j
++) {
System
.out
.print(j
+ "\t");
count
++;
/*添加判断:
* 若计数器到
7(填满一周),需换行,并且计数器归零,以便下周的日期顺序输出
*/
if(count
== 7) {
System
.out
.println();
System
.out
.println();
count
= 0;
}
}
}
public static void main(String
[] args
) {
new MyCalendar(2020,7).showCalendar();
}
}
输出结果(截图):
反思:
学习了一些JDK内置类即其常用方法,相比之前,优化了实现过程。学习的内置方法虽然代码更简单,但其底层的算法逻辑还是得明白。(记得时不时看看以前的代码看看逻辑,也别忘了查看源码、查API)但这次动态日历还是只用了一个自定义方法,逻辑与可视化布局挤在一起,思维结构比混乱,可以优化的地方还有很多。下次再尝试加入Scanner和JFrame内容,在窗口显示运行。同一个题目,在学习到新知识的过程中,不断去运用新知识,从而简化实现过程,优化实现效果。
写在最后:
希望写博客是一个好的开始,记录自己的成长、分享自己的心得,也希望以后回首现在的这些技术经历能有心得收获新的感悟。
PS:
某易云上那个码农必备的后摇歌单快把我听睡着了, 还是激流金属鞭鞑金属带劲_(:τ」∠)_