输入年份,然后打印出该年的万年历,以及标识出当天日期。相似于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调试里可以追踪调用的 ...
随机推荐
- [JOYOI] 1071 LCIS
拖了好久的LCIS f[i][j]表示a串前i个,b串以b[j]结尾的LCIS长度. 转移时考虑a[i]和b[j]是否相等,如果不等: 那么既然是以j结尾,说明a串前i-1位有一个字符和b匹配了,所以 ...
- idea Error:(65, 27) java: 未结束的字符串文字
今天在使用IDEA的时候,出现了这个错误,原因项目文件编码不一致导致的,解决方法是: 将项目的文件编码全改成一致(UTF-8),如下图所示:
- Druid配置
spring-mybatis.xml <!-- 定义数据源Bean --> <!-- Druid --> <bean id="dataSource" ...
- shiro框架的四中权限控制方式
https://www.cnblogs.com/cocosili/p/7103025.html 一.在自定义的realm中进行权限控制 在applicationContext.xml文件中添加 /a ...
- C#中对泛型List进行分组输出元素
背景:在输出列表时,往往需要按照某一字段进行分组,比如在输出城市列表时,按照首字母进行分组,输出学生列表时,按照年级进行分组,然后再对分组的结果按照其他的字段进行排序. 如存在以下STU学生类,代码如 ...
- Oracle获取最近执行的SQL语句
注意:不是每次执行的语句都会记录(如果执行的语句是能在该表找到的则ORACLE不会再次记录,就是说本次执行的语句和上次或者说以前的语句一模一样则下面语句就查不出来的): select last_loa ...
- 【MFC】利用MFC写一个计时器小程序
1整体设计 创建对话框程序,并且设计对话框相关控件如图 相应的ID和对应的成员变量如图: 我的想法是这样的,只读属性的编辑框添加有CString类型的成员变量(如s_hour),在xxxDlg.h里另 ...
- java基础之switch
switch 语句由一个控制表达式和多个case标签组成. switch 控制表达式支持的类型有byte.short.char.int.enum(Java 5).String(Java 7). swi ...
- 四、SQL基础知识--约束和视图
--创建约束的方式 --一.在字段创建时将约束添加到字段之后 CREATE TABLE ZYJ_YUESHU( ZYJ_ID VARCHAR(20) NOT NULL PRIMARY KEY, --创 ...
- POJ2926-Requirements,曼哈顿距离。去掉绝对值符号暴力枚举所有情况,神薙!
Requirements 好吧,这题我实在想不到什么优化的方法,看了看讨论区,顺便膜拜了一下大 ...