输入年份,然后打印出该年的万年历,以及标识出当天日期。相似于linux下的cal -y结果。
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结果。的更多相关文章
- JS 输入年份,再输入月份,弹出这个月有多少天?
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java50道经典习题-程序19 输入行数打印菱形图案
题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案 * *** ************ ***** *** *分析:先把图形分 ...
- java 通过控制台输入的数字打印菱形字母
package com.rui.test; import java.util.Scanner; /** * @author sunshine * @version 1.0 * @date:2015年1 ...
- 【VBA编程】03.判断输入年份是否是闰年
通过输入月份,判断是否是闰年 [代码区域] Sub 判断闰年() Dim year As Integer '用于保存输入的年份 year = CInt(InputBox("请输入需要判断的年 ...
- 代码实现从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt
package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...
- java输入年份和月份,输出天数
import java.util.*; public class Demo { public static void main(String[] args){ int days = 0; Scanne ...
- windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...
- 第三章 用SDK编译出第一个在Linux下的软件界面
第三章 用SDK编译出第一个在Linux下的软件界面 先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下: 代码内容暂时可以先不理解,先让程序跑起来再 ...
- Linux下追踪函数调用,打印栈帧
事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况.也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的 ...
随机推荐
- 前端开发中的 meta 整理
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- 「 HDOJ P3887 」 Counting Offspring
翻译 题目描述 给你一棵树,和它的树根 $P$,并且节点从 $1\rightarrow n$ 编号,现在定义 $f(i)$ 为 $i$ 的子树中,节点编号小于 $i$ 的节点的个数. 输入格式 有多组 ...
- Mysql+MHA高可用集群
http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/
- 10. GLOBAL_STATUS 与 SESSION_STATUS
10. GLOBAL_STATUS 与 SESSION_STATUS 注意 从MySQL 5.7.6开始,show_compatibility_56系统变量的值会影响此处描述的表中的可用信息. 有关详 ...
- Linux中的FTP服务
FTP服务 文件传输协议 FTPFile Transfer Protocol 早期的三个应用级协议之一 基于C/S结构 双通道协议:数据和命令连接 数据传输格式:二进制(默认)和文本 两种模式:服务器 ...
- 移动web touch事件
参考:http://www.cnblogs.com/dojo-lzz/p/5452575.html wap中的原生touch 事件,touchstart.touchmove.touchend.touc ...
- Sublime Text3 解决中文乱码 & 可用注册码 & 设置默认打开方式
Sublime Text3注册码 Sublime Text Build 3065 License key 复制如下三个任意一个正版注册码即可 -– BEGIN LICENSE -– Andrew We ...
- 【UVA 1636】 (条件概率)
题链:https://cn.vjudge.net/problem/UVA-1636 题意 给出一把枪的子弹序列,已知开了一枪且无子弹,问下一步的决策是旋转,还是开下一枪 题解 已知开一枪没子弹,下一枪 ...
- 【MVC】使用笔记
1,在ASP.NET MVC中,路由机制特别碉堡,直接对应于动作方法.没有必要给每一个动作方法添加视图,当视图返回View时,路由系统会自动寻找指定目录下的视图资源. public ViewResul ...
- linux shell管道和xargs的区别
如上图,加了xargs的话相当于将上一个操作的结果作为命令执行前的操作,不加的话直接先把后面的命令运行一遍再操作