任务描述

本关任务:接收一个年份数和一个月份数,打印出该月的日历。

日历输出样式如下图1所示:

图1

如果输入的年份小于 1900,请输出:“请输入大于或等于1900的年份”。

注意:日期之间以及星期之间使用 \t 分隔。

/*
接收一个年份数(大于等于1900)和一个月份数,打印出该月的日历。
日历输出格式如下:
==================================================
日   一   二   三   四   五   六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
==================================================
其中日期上下的分隔符用的是50个=。
日期之间以及星期之间使用\t分隔。
1900年1月1日是星期1。思路分析:
求1900年到输入年份之间的累计天数,其中闰年366天,平年365天;
求1月到输入月份之间的累计天数;
得到1900-1-1到输入年月之前所有天数,用总天数对7求余,对余数加1,该数值即为该月1号的星期;
判断输入月份有多少天;
控制格式打印日历。
*/// 请在Begin-End间编写完整代码,类名请使用Calendar
/********** Begin **********/
// 导入 Scanner 类
import java.util.Scanner;
// 定义公开类 Calendar
public class Calendar {// 定义主方法 main,在该方法中完成本关任务public static void main(String[] args) {//日历打印Scanner input = new Scanner(System.in);int year = input.nextInt();int month = input.nextInt();int y_sum = 0;//输入年份到1900年的天数int m_sum = 0;//输入月份到1月1好的天数int sum = 0;//总天数if (year < 1900){System.out.println("请输入大于或等于1900的年份");}else if (month > 12){System.out.println("请输入正确的月份");}else {for (int y = 1900; y < year; y++) {if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {y_sum += 366;} else {y_sum += 365;}}for (int m = 1; m < month; m++) {if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {m_sum += 31;} else if (m == 4 || m == 6 || m == 9 || m == 11) {m_sum += 30;} else if (m == 2) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {m_sum += 29;} else {m_sum += 28;}}}int x = ((y_sum + m_sum) % 7) + 1;if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {sum = 31;} else if (month == 4 || month == 6 || month == 9 || month == 11) {sum = 30;} else if (month == 2) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {sum = 29;} else {sum = 28;}}System.out.println("==================================================");System.out.println("日\t" + "一\t" + "二\t" + "三\t" + "四\t" + "五\t" + "六");if (x == 7) {System.out.print("1\t");} else if (x == 1) {System.out.print("\t" + "1\t");} else if (x == 2) {System.out.print("\t" + "\t" + "1\t");} else if (x == 3) {System.out.print(" \t" + " \t" + " \t" + "1\t");} else if (x == 4) {System.out.print(" \t" + " \t" + " \t" + " \t" + "1\t");} else if (x == 5) {System.out.print(" \t" + " \t" + " \t" + " \t" + " \t" + "1\t");} else if (x == 6) {System.out.print(" \t" + " \t" + " \t" + " \t" + " \t" + " \t" + "1\t");}for (int z = 1; z <= sum; z++) {if (x == 7){for (int k = 1; k <= 6; k++) {z++;if (z > sum) {break;}System.out.print((z) + "\t");}}else {for (int k = 1; k <= (6 - x); k++) {z++;if (z > sum) {break;}System.out.print((z) + "\t");}}z = z - 1;//跳出一周循环时,天数会多一天System.out.println();x = -1;//跳出第一周后,后面都是7天}System.out.println("==================================================");}}
}
/********** End **********/

练习-Java循环综合练习四之日历打印相关推荐

  1. java循环有哪四要素_java-循环

    引用变量时要给变量赋值,如果循环进不去就会报错. 一.循环结构的四要素 1.初始化条件 2.循环条件 ---> 是Boolean类型 3.循环体 4.迭代条件 说明:通常情况下,循环结束都是因为 ...

  2. java循环语句的四要素如何设置_JAVA 基础4-语句与方法

    一.分支语句 1.if(条件判断){ 语句 } 2.if...else... 3.if...else if... 4.if...else if... else... 5.switch...case.. ...

  3. 练习-Java循环综合练习一之住房贷款还款计算

    任务描述 本关任务:编写一个程序,由用户输入住房贷款和贷款年限,程序输出不同利率下的月还款额和总还款额,利率从 5%-8%,增长间隔为 1/8.例如,如果输入贷款额 10000 元人民币,贷款期限 5 ...

  4. 头歌-练习-Java循环综合练习一之住房贷款还款计算

    这题考的是你的算账能力,哈哈哈哈,最重要的就是格式化输出,我们这用的是String.format(); 仅供参考,有更好的想法或者意见,评论区等你. 加油,你就是下一个秃顶小宝贝❤ /* 任务:编写一 ...

  5. 练习-Java循环综合练习二之哥德巴赫猜想

    本题使用了isPrime()函数,如果整数是素数,返回True,否则返回False. 加油,未来在等你去创造. public class GeTest {// 判断整数是否是素数public stat ...

  6. JAVA+MySQL综合笔记

    Java+MySQL综合运用笔记 一.Java连接使用mysql的5个思路过程 ​ 首先导入JDBC驱动jar包放到lib文件夹里面. 1.加载驱动方法 ①注册驱动:DriverManager.reg ...

  7. java题目集合第四部分(pta)

    目录 7-1 sdut-Collection-sort--C~K的班级(II) 输入格式: 输出格式: 输入样例: 输出样例: 7-2 sdut-Map-Sort--C~K的班级(III) 输入格式: ...

  8. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  9. Java多线程闲聊(四):阻塞队列与线程池原理

    Java多线程闲聊(四)-阻塞队列与线程池原理 前言 复用永远是人们永恒的主题,这能让我们更好地避免重复制造轮子. 说到多线程,果然还是绕不开线程池,那就来聊聊吧. 人们往往相信,世界是存在一些规律的 ...

  10. c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...

    今天给大家带来的是初级Java基础部分的知识:包括初始Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

最新文章

  1. (完全解决)为什么运行.bat批处理文件但是只执行了.bat文件中的第一句(行)命令
  2. 深入理解jQuery的Event机制
  3. 信息系统项目管理师-项目采购管理核心知识点思维脑图
  4. IE8不兼容你的网页 怎么办? - 简单开启兼容模式
  5. rsem比对_RSEM方法比对和表达量计算
  6. 国内首批AI专业毕业生创办的澎思科技,已完成Pre-A轮融资
  7. CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
  8. shiro-cas------自定义登录页面
  9. TensorFlow读取自己数据集的几个小方法
  10. Spring Cloud Alibaba Seata工作原理
  11. BP神经网络数据预测(excel)
  12. 社招+校招被技术面试完虐系列之多方位考查点
  13. cs224w(图机器学习)2021冬季课程学习笔记15 Frequent Subgraph Mining with GNNs
  14. matlab在生物学中的应用,MATLAB在生物医学信号处理中的应用
  15. css3僵尸走路动画js特效
  16. 关于Precision, Accuracy, F1, Micro-Ave, Macro-Ave
  17. 格式工厂安装流程记录
  18. python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)
  19. Myrio的各个接线口,有需要可以下载使用
  20. 优秀的人不仅比我们努力 更比我们会利用时间

热门文章

  1. Linux下的C编程(一)你好 世界
  2. Introduction to Linear Optimization 2.1 多面体和凸集
  3. 黑苹果系统的优化与问题解决(一)
  4. IPAM——IP地址管理
  5. grpc系列1-K8S集群,VIP,grpc._channel._InactiveRpcError connection reset by peer解决方案 Paddleserving服务化部署
  6. 小程序的支付以及取消之后再次支付
  7. 腾讯微云和坚果云哪个好用?
  8. 关于ThinkPad T490s 风扇不转动问题
  9. mysql ndb是什么_MySQL NDB Cluster介绍
  10. dma子系统 dmac