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. spring中注解的实现原理

    @Autowired和@Resource的区别: 在Java中使用@Autowired和@Resource注解进行装配,这两个注解分别是:1.@Autowired按照默认类型(类名称)装配依赖对象,默 ...

  2. Exploded location overlaps an existing deployment解决办法

    项目->properties->MyEclipse->Web->Web Context-root的名字为重命名之后的名字即可

  3. 优化UITableView

    在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信.Safari.App Store.iTunes.Game Cente ...

  4. [LOJ] 分块九题 7

    区间加法,区间乘法,单点查询. 洛谷线段树2 屡清加法乘法的关系,定义答案为 a*mut+add 对于整块: 新的乘w,mut和add都要乘w 新的加w,add加w //Stay foolish,st ...

  5. git 项目相关

    工具篇:Sourcetree 和 Git Bash Sourcetree Git一款非常好用的可视化工具,方便管理项目.下载地址 https://www.sourcetreeapp.com/ Git ...

  6. LeetCode(171) Excel Sheet Column Number

    题目 Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, re ...

  7. 一道在CF上WA了9次才AC的A题题目与10个版本的代码代码

    题目(题目链接:https://codeforces.com/problemset/problem/733/A):   A. Grasshopper And the String time limit ...

  8. [codeforces551E]GukiZ and GukiZiana

    [codeforces551E]GukiZ and GukiZiana 试题描述 Professor GukiZ was playing with arrays again and accidenta ...

  9. [luoguP1364] 医院设置(树的重心)

    传送门 假设数据再大些,我这就是正解,然而题解里总是各种水过. 两边dfs,一遍求重心,一遍统计距离. ——代码 #include <cstdio> #include <cstrin ...

  10. poj1523求割点以及割后连通分量数tarjan算法应用

    无向图,双向通道即可,tarjan算法简单应用.点u是割点,条件1:u是dfs树根,则u至少有2个孩子结点.||条件2:u不是根,dfn[u]=<low[v],v是u的孩子结点,而且每个这样的v ...