1.用for循环、switch

以1990.01.01作为参考

public class Demo_9 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print("输入年、月(如:2020 01):");

int year = scan.nextInt();

int month = scan.nextInt();

int daysum = 0; // 天数加和

int week = 0; //初始化星期

//判断闰年,并将每年的天数相加

for (int i = 1990; i < year; i++) {

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

daysum += 366;

} else {

daysum += 365;

}

}

//用循环将最后一年每个月天数相加

for (int i = 1; i < month; i++) {

switch (i) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

daysum += 31;

break;

case 2:

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

daysum += 29;

break;

} else {

daysum += 28;

break;

}

default:

daysum += 30;

}

}

//储存所查询的当前月的天数

int day = 0;

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

day = 31;

break;

case 2:

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

day = 29;

break;

} else {

day = 28;

break;

}

default:

daysum += 30;

day = 30;

}

week = daysum % 7 + 1; //计算当前月的一号星期几

//制作日历

System.out.println("一\t二\t三\t四\t五\t六\t日\t");

for (int i = 1; i < day + week; i++) {

if (i < week) {

System.out.print("\t");

} else {

if ((i - 1) % 7 == 0) {

System.out.println();

}

System.out.print((i - week + 1) + "\t");

}

}

}

}

2.将重复的代码封装调用

public class Demo {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print("请输入 年 月(2000 1):");

int year = scan.nextInt();

int month = scan.nextInt();

int daysum = dayForMonth(year, month);

int week = dayForYear(year, month) % 7 + 1;

if (year < 1990) {

System.out.println("抱歉!1990年以前暂不支持!!!");

return;

}

if (daysum < 0) {

System.out.println("输入的月份有误,请重新输入!");

return;

}

System.out.println("\t\t" + " " + year + "年" + month + "月");

System.out.println("一\t二\t三\t四\t五\t六\t日\t");

for (int i = 1; i <= daysum + week - 1; i++) {

if (i < week) {

System.out.print("\t");

} else {

System.out.print(i - (week - 1) + "\t");

if (i % 7 == 0) {

System.out.println("\n");

}

}

}

}

// 闰年的判断

public static boolean isLeapYear(int year) {

if (year % 400 == 0 || year % 4 == 0 && year % 400 == 0) {

return true;

} else {

return false;

}

}

// 每个月的天数

public static int dayForMonth(int year, int month) {

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

if (isLeapYear(year)) {

return 29;

} else {

return 28;

}

}

return -1;

}

// 从参考值到所求值的天数

public static int dayForYear(int year, int month) {

int day = 0;

for (int i = 1990; i < year; i++) {

if (isLeapYear(i)) {

day += 366;

} else {

day += 365;

}

}

for (int i = 0; i < month; i++) {

day += dayForMonth(year, i);

}

return day;

}

}

3.总结

对于第一种方法,将一些代码重复使用,书写麻烦,观看不简洁。

对于第二种,将重复使用的代码进行封装,直接调用,程序出错修改方便。

小白还是第一次写博客,作为一名Java的初学者,在写第一种方法时,知识存储量不够,另外思维不够严谨,没有将出错情况编写进入,输入错误的数据也会出现答案,小白将自己的学习过程发出来,希望各位大佬们指点,一起加油进步。

java 制作简易日历_Java制作简单日历相关推荐

  1. java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  2. java课程设计日历_java课程设计日历记事本赵锐.doc

    java课程设计日历记事本赵锐.doc 2本科生课程设计课程名称JAVA程序设计课程设计题目日历记事本学号201440930252学生姓名赵锐所在专业2014计算机学院所在班级信工2班成绩课程设计时间 ...

  3. java中的日历_Java中的日历功能

    java.util.calendar类提供Java中的日历功能.是一个抽象类,提供在特定时间点和一组日历字段(例如YEAR,MONTH,DAY_OF_MONTH,HOUR等)之间进行转换的方法,以及用 ...

  4. java编写简易计算器_java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一 ...

  5. java简易日历程序报告_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  6. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...

  7. java制作excel报表_java制作Excel报表简单易用(拿来即用)

    java制作Excel报表简单易用 本程序是java程序 本程序是通过jxl.jar来实现的. 最下面会贴出代码 完整例子下载(我放在百度云盘了): http://www.doczj.com/doc/ ...

  8. java计算器制作教学视频_java实例——简单计算器的制做

    本文章由xin3721视频教程网发布,转载请注明出处. 这是一个不错的计算器经过测试无误,现将代码公布供大家参考学习. import java.awt.*; import java.awt.event ...

  9. java中实现工厂日历_Java实现的日历功能完整示例

    本文实例讲述了java实现的日历功能.分享给大家供大家参考,具体如下: 应用名称:Java日历 用到的知识:Java GUI编程,日期操作 开发环境:win8+eclipse+jdk1.8 功能说明: ...

最新文章

  1. php中sql where,sql?where
  2. jQuery计算器插件
  3. 无为职业学校计算机班,致盐亭职中2000级计算机三班全体同学的一封信
  4. 50行以上c语言程序代码,C语言非常简单的字符统计程序50行
  5. 删除元素值最大的结点
  6. CSRF跨站请求伪造漏洞
  7. SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
  8. 2021年茶艺师(初级)考试题库及茶艺师(初级)考试技巧
  9. Pandas数据分析实战(1)——探索Chipotle快餐数据
  10. 学计算机的女生选择公务员还是考研,女生本科毕业!考研好,还是考公务员更好?...
  11. C语言数据结构-程序设计与算法基础II-电大同步进度
  12. 谷歌学术国内镜像网址收集-查文献
  13. pico-ctf-2013 overflow-2
  14. RT_thread STM32通用Bootloader 做OTA升级
  15. d3.js操作svg
  16. fcpx插件Stupid Raisins Sale Pop for Mac(37种促销标题模板)
  17. 一个程序员的丰功伟绩
  18. 《管理学》期末第一次复习
  19. 中国电信天翼开放平台全面释放开放合作
  20. Android动画的优化

热门文章

  1. 前端学习之Bootstrap入门 网格系统
  2. 行锁(锁住的是一行记录)
  3. 【项目实战】——USB双路继电器电脑控制灯的开关(Python)
  4. unity3d 模拟电脑实现_基于.Unity3D的三维虚拟电脑组装实验系统开发毕业设计(含源文件).doc...
  5. 【源码讲解】Spring事务是如何应用到你的业务场景中的?
  6. SSH和JSF+EJB+JPA的比较
  7. 分享一款意想不到好用的手机PDF编辑器
  8. 【Java】1-100之间所有自然数的和(while和for方法)
  9. C4D模型工具—偏移
  10. FFmpeg基础:获取音视频的各种编码参数