当前位置: 首页 > news >正文

JAVA基础:万年历 【习题笔记】

  • 基础版
     public static void main(String[] args) {System.out.println("请输入年份:");Scanner input = new Scanner(System.in);int year = input.nextInt();System.out.println("请输入月份:");int month = input.nextInt();//计算这个月有多少天int days = 0;if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {days = 31;} else if (month == 4 || month == 6 || month == 9 || month == 11) {days = 30;} else {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {days = 29;} else {days = 28;}}//2.算输入月份的1号是星期几//2.1先算 你输进来的年份year年 距离 1900年相差的整年天数差int sumYear = 0;for (int i = 1900; i < year; i++) {if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {sumYear += 366;} else {sumYear += 365;}}//2.2再算year年的一月 距离month月的天数差int sumMonth = 0;for (int i = 1; i < month; i++) {if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {sumMonth += 31;} else if (i == 4 || i == 6 || i == 9 || i == 11) {sumMonth += 30;} else {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {sumMonth += 29;} else {sumMonth += 28;}}}//2.3计算year年month月1号是星期几?int week = (sumYear + sumMonth + 1) % 7;if (week == 0) {week = 7;}//3.打印日历System.out.println(year + "年" + month + "月");System.out.println("一\t二\t三\t四\t五\t六\t日");for (int i = 1; i < week; i++) {//挤出前面System.out.print("\t");//直接输出}for (int i = 1; i <= days; i++) {//日历内容System.out.print(i + "\t");//直接输出if ((sumMonth + sumYear + i) % 7 == 0) {//换行System.out.println();//输出后换行}}}

    最基础的写法,代码量大,但是思路最为清晰,新手必学!!!

  • 进阶版
     public static void main4(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入年份");int year = input.nextInt();System.out.println("请输入月份");int month = input.nextInt();Calendar calendar = Calendar.getInstance();//当前时间calendar.set(Calendar.YEAR, year);calendar.set(Calendar.MONTH, month - 1);//这个月有多少天?int days = calendar.getActualMaximum(Calendar.DATE);//这个月的1号是星期几?calendar.set(Calendar.DATE, 1);int week = calendar.get(Calendar.DAY_OF_WEEK) == 1 ? 7 : calendar.get(Calendar.DAY_OF_WEEK) - 1;//calendar .get(Calendar.DAY_OF_WEEK) :获取1号是本周的第几天//打印日历System.out.println("一\t二\t三\t四\t五\t六\t日\t");for (int i = 1; i < week; i++) {System.out.print("\t");}for (int i = 1; i <= days; i++) {System.out.print(i + "\t");calendar.set(Calendar.DATE, i);if (calendar.get(Calendar.DAY_OF_WEEK) == 1) {System.out.println();}}}

    采用日期时间类,使用Canlendar,代码更加简单,更加便捷。


http://www.mrgr.cn/news/60213.html

相关文章:

  • 51单片机完全学习——红外遥控
  • 【MySQL】LeeCode高频SQL50题基础版刷题记录(持续更新)
  • Rust 知识的 20 道练习题和详细解答
  • 字节流读写复制视频 JAVA
  • Java基础配置学习
  • 部署DNS主从服务器
  • 开放式耳机哪个品牌音质好?音质最好的开放式耳机推荐!
  • 深入探索:深度学习在时间序列预测中的强大应用与实现
  • 红外激光模组如何作为激光水平尺被利用的呢?
  • python中协程的基本逻辑
  • 深入解析银行家算法:原理、实现、应用与优缺点
  • 什么是事件冒泡?如何阻止事件冒泡和浏览器默认事件?
  • 电子元器件的常见封装 各种封装类型的特点介绍
  • 管家婆ERP集成用友U8(用友U8主供应链)
  • 【前端】在 Next.js 开发服务器中应该如何配置 HTTPS?
  • 微服务电商平台课程二:技术图谱
  • 【赵渝强老师】Hive的分区表
  • Leetcode 3334. Find the Maximum Factor Score of Array
  • MATLAB生态环境数据处理与分析
  • 新手逆向实战三部曲之二——通过更改关键跳注册软件(爆破)
  • 互联网摸鱼日报(2024-10-28)
  • CHAPTER 14 Nonlinearity and Mismatc
  • 【vue】前端使用modern-screenshot截取屏幕截图
  • 【java】java的基本程序设计结构02-数据类型
  • 如何管理供应商、实现供应商协同管理?
  • 高效MySQL缓存策略