public class Permanent {

public static boolean isLeapYear(int year){//能被4整除但不能被100整除。或者能被400整除

boolean leapYear = false;

if((year % 100 == 0 && year % 400 == 0)||(year % 100 != 0 && year % 4 == 0)){

leapYear = true;

}

return leapYear;

}

public static int countDays(int year){//选个基准2015年1月1日,星期四

int countDays = 0;

int beginYear =year > 2015 ? 2015 : year;

int endYear = year > 2015 ?

year : 2015;



for(int i = beginYear;i < endYear;i++ ){

if(isLeapYear(i)){

countDays += 366;

}else{

countDays += 365;

}

}

return countDays;



}

public static void showCaledar(int year){

int days = countDays(year);

int weekDay = days % 7;

if(year > 2015){

weekDay = (weekDay + 4) % 7;

}else{

weekDay = (11 -weekDay) % 7;

}

String[] monthLabels = new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};

String[] weekLabels = new String[]{"Sun","Mon","Tur","Wen","Thr","Fra","Sat"};

int[] monthDay = {31,28,31,30,31,30,31,31,30,31,30,31};

for(int i = 0;i < 12;i++){

System.out.println("\n"+monthLabels[i]);

for(String weekLabel : weekLabels){ //每一周的标签

System.out.print(weekLabel + " ");

}

System.out.println(); //下一行

for(int j = 0; j < weekDay; j++){//找到第一个日期

System.out.print(" ");

}

if(isLeapYear(year)){

monthDay[1] = 29;

}else{

monthDay[1] = 28;

}

for(int k = 1;k <= monthDay[i];k++){

if((k + weekDay - 1) % 7 == 0){

System.out.println();

}

if(k < 10){ //这里是对齐的问题

System.out.print(k + " ");

}else{

System.out.print(k + " ");

}



}

weekDay = (weekDay + monthDay[i]) % 7;

}

}



public static void main(String[] args) {

showCaledar(2014);

}



}

输入年份,然后打印出该年的万年历,以及标识出当天日期。相似于linux下的cal -y结果。的更多相关文章

  1. JS 输入年份,再输入月份,弹出这个月有多少天?

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. Java50道经典习题-程序19 输入行数打印菱形图案

    题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分 ...

  3. java 通过控制台输入的数字打印菱形字母

    package com.rui.test; import java.util.Scanner; /** * @author sunshine * @version 1.0 * @date:2015年1 ...

  4. 【VBA编程】03.判断输入年份是否是闰年

    通过输入月份,判断是否是闰年 [代码区域] Sub 判断闰年() Dim year As Integer '用于保存输入的年份 year = CInt(InputBox("请输入需要判断的年 ...

  5. 代码实现从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt

    package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...

  6. java输入年份和月份,输出天数

    import java.util.*; public class Demo { public static void main(String[] args){ int days = 0; Scanne ...

  7. windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号

    一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...

  8. 第三章 用SDK编译出第一个在Linux下的软件界面

    第三章 用SDK编译出第一个在Linux下的软件界面 先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下: 代码内容暂时可以先不理解,先让程序跑起来再 ...

  9. Linux下追踪函数调用,打印栈帧

    事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况.也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的 ...

随机推荐

  1. HTTP初步了解

    HTTP协议简介 HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的.(暂不介绍HTTP2) 协议 协议规定了通信双方必须遵循的数据传输格式,这样 ...

  2. java面试宝典第一弹

    object类的直接子类有哪些 Boolean Character Character.Subset Class ClassLoader Compiler Enum Math Number Packa ...

  3. Linux基础测试

    目 录 第1章 文件及目录课后作业    1 第2章 Linux打包与压缩习题    1 第3章 Linux系统VIM编辑器习题    1   文件及目录课后作业 从/proc/meminfo中过滤出 ...

  4. 如何用纯 CSS 绘制一颗闪闪发光的璀璨钻石

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. 在线演示 https://codepen.io/zhang-ou/pen/qYqwQp 可交互视频教程 此视 ...

  5. js实现复制粘贴功能

    在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能. 另一篇是禁止复制粘贴 前端er怎样操作剪切复制以及禁止复制+破解等 初步想法: 1. ...

  6. qt 窗体间通信

    利用qt的信号和槽,可以完成窗体间的通信,下面列出父子窗口利用信号和槽的相关代码. parent窗口: //parent.h #ifndef PARENT_H #define PARENT_H #in ...

  7. 【模板】CDQ分治

    __stdcall大佬的讲解 这里贴的代码写的是点修改.区间查询的题. #include<cstdio> #include<cstring> #include<algor ...

  8. NOI模拟赛(3.13)Hike (远行)

    Description Mirada生活的城市中有N个小镇,一开始小镇之间没有任何道路连接.随着经济发展,小镇之间陆续建起了一些双向的道路,但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇, ...

  9. 04004_使用JavaScript完成注册表单数据校验

    1.需求分析 (1)用户在进行注册的时候会输入一些内容,但是有些用户会输入一些不合法的内容,这样会导致服务器的压力过大,此时我们需要对用户输入的内容进行一个校验(前端校验和后台校验): (2)前端校验 ...

  10. ERP类系统设计学习

    文章:分布式.服务化的ERP系统架构设计 文章的方法是对系统进行拆分,拆分成多个子系统.