Java之万年历
@
二、Java之万年历
2.1 要求
- 输入年份;
- 输入月份;
- 输出某年某月的日历。
2.2 思路
- 实现从控制台接收年和月,判断是否是闰年(判断是否是闰年:能被4整除但不能被100整除;或者能被400整除);
- 计算输入月份的天数;
- 计算该月第一天是星期几;
3.1 计算输入年份距离1900年1月1日的天数;
3.2 计算输入月份之前的天数(从当年年初开始);
3.3 将以上两组数据进行求和;
3.4 已知该月之前的天数,计算输入月份的第一天是星期几(从1900年1月1日(星期一)开始推算: 星期几 = 1 + 天数差 % 7 )。 - 按格式输出该月日历 。
2.3 源代码
import java.util.Scanner;
public class index {
//每个月的天数
public static int monthday(int month, int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
int[] day = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return day[month];
} else {
int[] day = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return day[month];
}
}
//月份总天数
public static int monthdays(int month, int year) {
int totaldays = 0;
for (int i = 1; i < month; i++) {
totaldays = totaldays + monthday(i, year);
}
return totaldays;
}
//距离1900年的年份总天数
public static int yeardays(int year){
int yeardays = 0;
for (int i = 1900;i<year;i++){
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
yeardays = yeardays+366;
} else {
yeardays = yeardays+365;
}
}
System.out.println(year+"年距离1900年的总天数"+yeardays);
return yeardays;
}
//输出日历
public static void printCalendar(int month,int year){
int totaldays = 0;
if (year > 0) {
if (month > 0 && month < 13) {
//距离1900年1月1日总天数
totaldays = monthdays(month,year)+yeardays(year);
System.out.println(year+"年"+month+"月1日距离1900年的总天数:"+totaldays);
System.out.println("\n**********"+year+"年"+month+"月的日历为**********");
System.out.println("一\t二\t三\t四\t五\t六\t日\t");
int week = 1+totaldays%7;
//根据1日为周几输出空格
for(int i=1;i<week;i++){
System.out.print(" \t");
}
//输入具体日期
for(int i=1;i<=monthday(month,year);i++){
System.out.print(i+"\t");
if(week==7){
week = 1;//重置为星期一
System.out.println();
}else{
week++;
}
}
} else {
System.out.println("输入的月份不合法!");
}
} else {
System.out.println("输入的年份不合法!");
}
}
//主函数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("***********************欢迎使用万年历**************************");
System.out.println("*********请选择你需要进行的操作(输入进行操作之前的数字)**********");
System.out.println("********************1.查询某年某月的日历************************");
System.out.println("********************2.结束操作*********************************");
System.out.print("\n请选择你需要进行的操作:");
int a = scanner.nextInt();
for (int i=0;i>=0;i++) {
switch (a) {
case 1:
System.out.print("请选择年份:");
int year = scanner.nextInt();
System.out.print("请选择月份:");
int month = scanner.nextInt();
printCalendar(month, year);
System.out.print("\n请选择你需要进行的操作:");
a = scanner.nextInt();
break;
case 2:
System.out.println("退出程序成功!");
return;
}
}
}
}
2.4 结果截图

注意:我的周日是在最后一栏
Java之万年历的更多相关文章
- java 实现万年历
曾经初学java写万年历,都是採用主要的算法求出是否闰年闰月 计算公式例如以下 int year = 2014, month = 8, total = 0; if (month == 1 || mon ...
- java输出万年历
import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class M ...
- Java开发万年历
自己做出来的万年历: 以下代码: public class Test2 { public static void main(String[] args) { Scanner sc = new Sca ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 小JAVA大世界之万年历
import java.util.Scanner; public class Calendar { public static void main(String[] args) { // 万年历 in ...
- 算法,java代码实现打印万年历
万年历 以1900年1月1号星期一为时间原点 星期日 第一天 星期一 第二天 星期二 第三天 星期三 第四天 星期四 第五天 星期五 第六天 星期六 第七天 1.计算出当前日 ...
- Java流程控制练习--万年历
Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...
- 用java进行简单的万年历编写
import java.util.Scanner; public class PrintCalendarDemo1 { public static void main(String[] args) { ...
- java万年历
import java.util.Scanner; public class perpetualCalendar { public static void main(String[] args) { ...
随机推荐
- Django基础六之cookie和session
Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...
- k8s原来这么简单(二)安装k8s1.23集群
官方文档:安装 kubeadm 安装条件 多台Linux机器 CentOS7 2G以上RAM,2个以上CPU 集群网络互通,可访问外网 关闭防火墙,关闭swap分区 准备安装环境 node IP k8 ...
- ActiveMQ-模块代码-02
模块模式 p2p模式 生产者 ConfigBeanQueue package com.producerp2p.producerp2p; import org.apache.activemq.comma ...
- mysql(mariadb)安装
mysql(mariadb)安装 前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将My ...
- Flash XSS
示例: 创建一个测试flash,代码如下,导出swf文件 //取m参数 var m=_root.m; //取showInfo参数 var showInfo=_root.showInfo; //调用ht ...
- BLHeli/ BLHeli_S开源无刷电调学习记录
BLHeli的历史轨迹:BLHeli -> BLHeli_S -> BLHeli_32,我们重点学习BLHeli_S版本. 该代码支持常规的1-2ms脉冲宽度输入,以及Oneshot125 ...
- Python中的鸭子类型
今天,我们来聊一聊Python中的鸭子类型(duck typing). 编程语言具有类型概念,例如Python中有数字类型.字符串类型.布尔类型,或者更加复杂的结构,例如元组tuple.列表list. ...
- mysql索引失效原理(联合索引失效问题)
单值索引B+树图单值索引在B+树的结构里,一个节点只存一个键值对 联合索引开局一张图,由数据库的a字段和b字段组成一个联合索引. 从本质上来说,联合索引也是一个B+树,和单值索引不同的是,联合索引的键 ...
- System.getenv和getProperty的区别
/** * System.getenv()是获取---环境变量(environment variables), * 系统层面的,好比我linux系统里的.bash_profile文件里面的变量 * 返 ...
- SPI简单解析
什么是SPI 一种服务加载方式,全名为Service Provider Interface,Service提供者接口 如果我们要抽象里面的模块,在面对对象编程当中,我们模块之间,一般推荐模块之间基于 ...