算法,java代码实现打印万年历
万年历
| 星期日 | 第一天 |
| 星期一 | 第二天 |
| 星期二 | 第三天 |
| 星期三 | 第四天 |
| 星期四 | 第五天 |
| 星期五 | 第六天 |
| 星期六 | 第七天 |
1.计算出当前日期距离原点的天数(例:2016/9/18)

2.计算出本月的一号是一周的第几天
3.计算出该月有多少天
4.循环打印

package com.bjsxt.game;
import java.util.Scanner;
public class Calendar {
public static boolean isLeapYear(int year){
if(year%4==0&&year%100!=0 || year%400==0){
return true;
}
return false;
} //计算当前月份的最大天数
public static int maxDays(int month,int year){ int maxDays;
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
maxDays = 31;
else if(month==4 || month==6 || month==9 || month==11)
maxDays = 30;
else{
if(isLeapYear(year))
maxDays = 29;
else
maxDays = 28;
}
return maxDays;
} //计算当前月份一号是一周的第几天
public static int count(int month,int year){
int k; //表示当前的输入值是一周的第几天
int r = 0, p = 0;
int count; //表示距离1970.1.1有多少天
//计算当前年份之前的瑞年和平年有多少个
for(int i=1900;i<year;i++){
if(isLeapYear(i))
r++;
else
p++;
}
count = 366*r+365*p;
//判断当前月份之前的总天数
for(int i=1;i<month;i++){
if(i==2){
if(isLeapYear(year))
count = count + 29;
else
count = count + 28;
}
else if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
count = count + 31;
else
count = count + 30;
}
k = (count+1)%7+1;
return k;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in); System.out.print("请输入年:");
int year = input.nextInt(); System.out.print("请输入月:");
int month = input.nextInt(); System.out.print("请输入日:");
int day = input.nextInt(); int maxDays = maxDays(month,year); //计算当前输入的月份最大值是多少天
int k = count(month, year); //计算当前月份的1号是第几天 System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=0;i<k-1;i++){
System.out.print(" \t");
}
for(int i=1;i<=maxDays;i++){
System.out.print(i+"\t");
if(k%7 == 0){
System.out.println("\n");
k = 0;
}
k++;
}
}
}
算法,java代码实现打印万年历的更多相关文章
- 排序算法Java代码实现(一)—— 选择排序
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...
- Java基础之打印万年历
今天刚开的博客,第一篇博文,一篇关于Java基础的内容,水平有限,多多见谅,希望和大家在学习编程的路上共同进步. 问题:输入年,月,打印对应年月的日历. 示例: ----------- ...
- 算法-java代码实现基数排序
基数排序 第11节 基数排序练习题 对于一个int数组,请编写一个基数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素均小于等于2000. 测试样例: [1 ...
- 算法-java代码实现计数排序
计数排序 第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3], ...
- 算法-java代码实现希尔排序
希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2 ...
- 算法-java代码实现堆排序
堆排序 第7节 堆排序练习题 对于一个int数组,请编写一个堆排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2 ...
- 算法-java代码实现快速排序
快速排序 对于一个int数组,请编写一个快速排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] ...
- 算法-java代码实现归并排序
归并排序 对于一个int数组,请编写一个归并排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] ...
- 排序算法Java代码实现(二)—— 冒泡排序
本篇内容: 冒泡排序 冒泡排序 算法思想: 冒泡排序的原理是:从左到右,相邻元素进行比较. 每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来. 代码实现: /** * ...
随机推荐
- linux系统下phpstudy里的mysql使用方法
linux作为一个优秀的服务器端管理系统,其实linux的桌面系统也用起来十分的nice.好吧,如何你在做开发的时候在linux下安装了lmap或者phpstudy,那么在第一次使用其自带的mysql ...
- CSS3 转换2D transform
Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix.下面我们一 ...
- Xamarin调用JSON.net来解析JSON
https://www.cnblogs.com/zjoch/p/4458516.html 再来我们要怎么解析JSON格示呢?在.net 中,我们很孰悉的JSON.net,没错,我们依然可以在X ...
- 微信小程序开发之picker
一.绑定简单数组 通过bindChange控制index,使得当前选择值发生改变 示例1 data: { Data: ['A','B'], Index: 0, }, <picker class= ...
- Python函数参数的五种类型
之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现. 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEY ...
- grpc
grpc入门(二) 一. 目标 本博文要介绍的是编写 grpc入门(一)中所提到的四种rpc的方式,然后通过命令行和eclipse两种方式生成对应的java代码,关于grpc是什么东西本文不再赘述. ...
- angular4.0项目文件解读
这篇文章我觉得是很有用的,便于我们对ng项目的理解,同时在配置项目时,也能够很快的定位到相应文件. 摘录的别人的文章,首先感谢那个路人兄弟,下面就开始学习吧. File 文件 Purpose 用途 e ...
- 【漏洞分析】dedecms有前提前台任意用户密码修改
0x00 前言 早上浏览sec-news,发现锦行信息安全发布了一篇文章<[漏洞分析] 织梦前台任意用户密码修改>,看完之后就想着自己复现一下. 该漏洞的精髓是php的弱类型比较,'0. ...
- unity3d ipv6支持
unity游戏应用提交app stroe需要通过ipv6测试,但是unity本身我没找到可用的接口,所以使用ios插件来处理. 插件的IOSNativeNet.h和IOSNativeNet.m代码: ...
- 【树链剖分】洛谷P3379 树链剖分求LCA
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...