已知1900年1月1日是星期一,要求打印输入年月的日历。

输出结果格式:

日    一    二    三    四    五    六
                                          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

思路分析:

  1. 对1900年到输入年份之间的天数进行累加求和,闰年366天,平年365天。
  2. 对输入月份之间的月份天数进行累加求和
  3. 得到1900-1-1到输入年月之前所有天数,对总天数模7运算,即对7求余,加1之后即为该月1号的星期
  4. 计算输入月份有多少天
  5. 控制格式打印日历

参考源码如下:


import java.util.Scanner;//运行这段代码记得修改类名和包名
public class HomeWork {/** @ 利用简单的for,switch,if语句实现打印输入年月的月份表 。* * @ 该程序只做练习用,不考虑非法输入情况*/public static void main(String[] args) {int date = 0; // 存放输入的年月后计算得到的1号的星期int day_max = 0;// 存放输入的年月的月的天数int year = 0;// 用来保存输入的年份int month = 0;// 用来保存输入的月份Scanner in = new Scanner(System.in);System.out.print("请输入年份:");year = in.nextInt();System.out.print("请输入月份:");month = in.nextInt();System.out.println("输入的日期为:" + year + "-" + month);in.close();int day_sum = 0;// 对1900~year之间的年份进行累加天数for (int i = 1900; i < year; i++) {// 判断是否是闰年if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {// 闰年366天day_sum += 366;} else {// 平年365天day_sum += 365;}} // for// 对月份进行累加计算for (int i = 1; i < month; i++) {switch (i) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:day_max = 31;day_sum += 31;break;case 2:// 判断是否是闰年if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {// 闰年2月29day_sum += 29;} else {// 平年2月28day_sum += 28;}break;default:day_sum += 30;break;}} // fordate = 1 + day_sum % 7; // 存放输入的日期计算得到的星期,1900年1月1日星期一System.out.println("输入的日期为:" + year + "-" + month + ",这个月的1号是星期" + date);// 如果是星期日,开头则 不用空出来距离// 此处之后date变量表示这月1号前面制表符的个数if (date == 7) {date = 0;}// 判断这个月份多少天switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:day_max = 31;break;case 2:// 判断是否是闰年if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {// 闰年2月29day_max = 29;} else {// 平年2月28day_max = 28;}break;default:day_max = 30;break;}System.out.println("==================================================");// 输出表头System.out.print("日\t一\t二\t三\t四\t五\t六\n");int day = 1;// 打印的天数for (int i = 0; i < 5; i++) {for (int j = 0; j < 7; j++) {// 打印第一行的时候,空出前date个空间if (i == 0 && j < date) {System.out.print("\t");// 跳出当前次循环continue;}if (day > day_max) {break;}System.out.print(day + "\t");day++;}// 打印完一行后换行System.out.println();}System.out.println("==================================================");}}

运行结果:

其他方式:JAVA练习:利用JAVA Calendar类实现打印日历

JAVA练习:利用JAVA基本语句实现打印日历相关推荐

  1. java 提现,利用java实现提现金额到支付宝账户的功能,提现一万手续费多少

    利用java实现提现金额到支付宝账户的功能利用爪哇岛实现提现金额到支付宝账户的功能, 实现步骤具体如下: (学习视频分享:java教学视频) 1.导入依赖 属国 groupIdcom.alipay.s ...

  2. ppt html java,怎么利用Java将PPT幻灯片转为HTML?

    下面以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件.这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式. 代码实现思路:[加载PP ...

  3. JAVA Email——利用java完成发送电子邮件(包括附件)

    考虑这个问题之前我们先来看一下传统的邮件是如何发送的.传统的邮件是通过邮局投递,然后从一个邮局到另一个邮局,最终到达用户的邮箱.电子邮件的发送过程也是类似 的,只不过是电子邮件是从用户电脑的邮件软件, ...

  4. 利用Java编写手机应用程序PalmOS基础篇

    作者:王森 相信大家一定會發現,最近到處都是嵌入式系統(embedded system)的新聞.而目前也已經有不少國內外廠商推出各式各樣的PDA(Personal Digital Assistant, ...

  5. kettle job如何利用java的反射机制获取执行的sql语句

    kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...

  6. 利用Java Calendar类打印日历

    利用Java Calendar类打印日历 说到日历,我们接触的就多了,每天都在和日历打交道,每年家里都会买日历.那么,大家知道如何用Java打印日历呢?在这里,我说一下如何用Calendar类打印日历 ...

  7. java游戏循环_利用Java循环语句实现攻击防御塔小游戏

    /* * 时间:2018-3-21 * 目的:practice * 内容:利用Java循环语句实现攻击防御塔小游戏 * 使用Java while语句实现一个英雄攻击防御塔的小程序,防御塔血量总计100 ...

  8. 利用Java打印空心菱形

    利用Java打印空心菱形 public class Lx {public static void main(String[] args) { //打出空心菱形for (int i = 1; i < ...

  9. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

最新文章

  1. Linux创建jupyter notebook和jupyter lab, windows可远程访问
  2. MySQL数据库服务器逐渐变慢 该如何分析与解决
  3. python调用窗口_如何调用一个函数并在另一个窗口中打开?
  4. 苹果电脑快捷键有哪些?mac系统快捷键大全详细介绍(全部)_苹果MAC_操作系统_脚本之家
  5. ltp︱基于ltp的无监督信息抽取模块
  6. java jodd_Jodd :一款优雅的 Java 工具集
  7. React Native 仿天猫物流跟踪时间轴
  8. 一次Mysql 死锁事故
  9. C语言中如何使用system函数
  10. 从零开始搭建java物联网平台_【攻略】从零开始搭建物联网系统
  11. C盘爆满?简单几招教你释放、清理C盘几十G空间,最有效的C盘清理方法
  12. 工业互联网,姓工,名互
  13. 局部边缘保留滤波器LEP算法原理及matlab代码实现
  14. Placement blockage types
  15. 天空卫士受邀成为四川省大数据发展研究会会长单位
  16. 【Python】面向对象,封装
  17. 第5章 网站前台-活动与招聘
  18. PC版微信多开,不用软件,自己动手丰衣足食。
  19. 电商项目4:全栈之前端
  20. 中国哪些公司在做大数据

热门文章

  1. C++中局部变量和全局变量的存储位置和内存回收机制
  2. android微信分享大图长图,裁剪微信分享缩略图片(长缩略图取中裁剪)
  3. 从零开始的Linux 阿里云ECS服务器搭建、FileZilla和宝塔
  4. 独立后台带分销功能月老办事处交友盲盒微信小程序源码新版,更好的裂变推广引流
  5. MySQL教程-01
  6. 云服务器 文件管理,云服务器文件管理工具
  7. 计算机弹歌光年之外谱子,光年之外-G.E.M. 鄧紫棋-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  8. 网站服务器防火墙waf介绍
  9. grails 自动生成crud代码和前端页面
  10. Kubernetes PVC一直处于Pending状态