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) { ...
随机推荐
- npm vue路由配置
npm vue路由 复习:1.README.md文件:保存如何使用的命令 (1) npm install:拷项目时可以不拷node_modules文件,运行该命令时,会自动下载node_mod ...
- Java工具之Myeclipse程序调试
步骤1: 分析错误,设置断点 步骤2: 启动调试 步骤3: 单步运行 (1)调试启动后,运行到设置断点的代码行将停住 (2)点击F6键可以单步运行程序,观察程序运行过程. (3)使用F5进入方法中进行 ...
- jdbc model 代码示例
package com.gylhaut.model; import java.util.Date; public class Goddess { @Override public String toS ...
- stash —— 一个极度实用的Git操作
今天要介绍的 Git 操作就是 stash,毫不夸张地说,每个用 Git 的开发人员都一定要会懂怎么使用. 在介绍之前,不知道你有没有和我一样的经历:某一天,我正在一个 feature 分支上高高兴兴 ...
- json.dumps参数之解
宝藏参数,懂的都懂^-^ 说明:编译后print()打印内容,此内容以字符串紧凑输出,且无顺序,中文不可读.. 应用:使用pycharm做接口测试时,print()打印出的接口下行,如下图: ...
- SQL注入常用命令
1. 数据库查询版本 Mssql select @@version Mysql select vresion()/select @@version oracle select banner from ...
- 『忘了再学』Shell基础 — 3、echo命令的介绍与使用
目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...
- BFC优化?
块格式化上下文, 特性: 使 BFC 内部浮动元素不会到处乱跑: 和浮动元素产生边界.
- Spring 框架中的单例 bean 是线程安全的吗?
不,Spring 框架中的单例 bean 不是线程安全的.
- 转:红黑树和AVL树(平衡二叉树)区别
本文转载至链接:https://blog.csdn.net/u010899985/article/details/80981053 一.AVL树(平衡二叉树) (1)简介 AVL树是带有平衡条件的二叉 ...