Calender打印日历
来源:互联网 发布:阿里云 关闭快照功能 编辑:程序博客网 时间:2024/05/16 15:40
import java.util.Scanner;
class Calender
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("输入年份:(格式:1900-~)");
long year=input.nextLong();
if(isRunNian(year)){System.out.println("闰年");}else{System.out.println("平年");}
System.out.println("输入月份:(格式:1-12)");
int month=input.nextInt();
System.out.println(month+"月总共有:"+getDays(year,month)+"天");
System.out.println("输入日数:(格式:1-31)");
int day=input.nextInt();
System.out.println("总天数:"+getAllDays(year,month,day));
System.out.println("星期:"+getWeekDay(getAllDays(year,month,day)));
System.out.println("本月一号是星期:"+getWeekDay(getAllDays(year,month,1)));
System.out.println();
printCal(year,month);
}
//判断闰年
static boolean isRunNian(long y){
if(y%400==0 || (y%4==0&&y%100!=0))
return true;
else
return false;
}
//判断月份,取天数
static int getDays(long y,int m){
int days=0;
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
if(isRunNian(y))
days=29;
else
days=28;
break;
default:
days=0;
break;
}
return days;
}
//获取去星期天
static long getAllDays(long y,int month,int day){
long sumDays=0;
//按年取天数
for(long l=1900;l<=y;l++){
if(l<=1900){sumDays=0;}
else if(l>1900 && isRunNian(l)){
sumDays+=366;//闰年366天
}else{
sumDays+=365;//平年365天
}
}
//按月取天
for(int i=1;i<=month-1;i++){
sumDays=sumDays+getDays(y,i);
}
sumDays+=(long)day;
return sumDays;
}
///取周几
static int getWeekDay(long days){
return (int)days%7;
}
//打印月历
static void printCal(long y,int m){
for(int i=0;i<7;i++){
switch(i){
case 1:System.out.print("星期一 ");break;
case 2:System.out.print("星期二 ");break;
case 3:System.out.print("星期三 ");break;
case 4:System.out.print("星期四 ");break;
case 5:System.out.print("星期五 ");break;
case 6:System.out.print("星期六 ");break;
case 0:System.out.print("星期日 ");break;
}
//打印星期的题标
}
System.out.println();
//打印具体日期
//int[] d= new int[35];
int k=1;int j=1;
for(int i=1;i<=getDays(y,m);i++){
if(i<=getWeekDay(getAllDays(y,m,1))){
System.out.print(" ");
}else{
if(k<=9){
System.out.print(" "+k+" ");
}else{
System.out.print(" "+k+" ");
}
k++;
}
if(i%7==0){
System.out.println();
}
}
}
class Calender
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("输入年份:(格式:1900-~)");
long year=input.nextLong();
if(isRunNian(year)){System.out.println("闰年");}else{System.out.println("平年");}
System.out.println("输入月份:(格式:1-12)");
int month=input.nextInt();
System.out.println(month+"月总共有:"+getDays(year,month)+"天");
System.out.println("输入日数:(格式:1-31)");
int day=input.nextInt();
System.out.println("总天数:"+getAllDays(year,month,day));
System.out.println("星期:"+getWeekDay(getAllDays(year,month,day)));
System.out.println("本月一号是星期:"+getWeekDay(getAllDays(year,month,1)));
System.out.println();
printCal(year,month);
}
//判断闰年
static boolean isRunNian(long y){
if(y%400==0 || (y%4==0&&y%100!=0))
return true;
else
return false;
}
//判断月份,取天数
static int getDays(long y,int m){
int days=0;
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
if(isRunNian(y))
days=29;
else
days=28;
break;
default:
days=0;
break;
}
return days;
}
//获取去星期天
static long getAllDays(long y,int month,int day){
long sumDays=0;
//按年取天数
for(long l=1900;l<=y;l++){
if(l<=1900){sumDays=0;}
else if(l>1900 && isRunNian(l)){
sumDays+=366;//闰年366天
}else{
sumDays+=365;//平年365天
}
}
//按月取天
for(int i=1;i<=month-1;i++){
sumDays=sumDays+getDays(y,i);
}
sumDays+=(long)day;
return sumDays;
}
///取周几
static int getWeekDay(long days){
return (int)days%7;
}
//打印月历
static void printCal(long y,int m){
for(int i=0;i<7;i++){
switch(i){
case 1:System.out.print("星期一 ");break;
case 2:System.out.print("星期二 ");break;
case 3:System.out.print("星期三 ");break;
case 4:System.out.print("星期四 ");break;
case 5:System.out.print("星期五 ");break;
case 6:System.out.print("星期六 ");break;
case 0:System.out.print("星期日 ");break;
}
//打印星期的题标
}
System.out.println();
//打印具体日期
//int[] d= new int[35];
int k=1;int j=1;
for(int i=1;i<=getDays(y,m);i++){
if(i<=getWeekDay(getAllDays(y,m,1))){
System.out.print(" ");
}else{
if(k<=9){
System.out.print(" "+k+" ");
}else{
System.out.print(" "+k+" ");
}
k++;
}
if(i%7==0){
System.out.println();
}
}
}
}
本代码是用于用户控制台按要求输入年、月、日,然后打印是:
闰年或平年,
哪一个月多少天,
从1900值输入日期为止总共
当前日是周几
本月一号是周几
以即本月的月历表
阅读全文
0 0
- Calender打印日历
- 演示Calender,日历
- ANDROID calender日历读写操作.
- php Calender(日历)代码分享
- 自定义的一个日历Calender
- 制作Calender--任意两个时间内的日历
- 日历三部曲:OutLook--Google Calender--Nokia
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- 打印日历
- Android对复杂xml文件的增删改查节点操作
- 天气太热,表单太丑,我要怎么办?
- C语言 简 单教务评价系统 线性表结构体
- Universal-Image-Loader框架的基本使用
- win2008操作系统申请许可证书
- Calender打印日历
- 在Linux 操作系统下获得cpu的core的数量
- PDF文档转换成CAD图纸的常用方法
- 应届毕业生如何成为一名服务器端开发工程师(一)
- java循环分别实现将10进值整数和小数变成二进制数
- ReactiveObjC学习笔记
- 论如何画好一条虚线
- 1秒30000QPS,前后端设计思路
- 通过live555实现H264 RTSP直播