//输入年份和月份,打印出这个月的日历表
/*
1.1900年1月1日是星期一
2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天
1)
3.总天数%7得出从星期几开始
注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元。
so,在本程序中不考了1900年以前的年份了。有兴趣的可以自己研究下。
*/
import java.util.Scanner;
class Calender{ public static void main(String[] args){ print(); } //打印输出
public static void print(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份(1~12):");
int month = sc.nextInt(); int days = getDays(year, month);//getDays方法详细请往下看
//days+1:day是总天数,输入月份的总天数只是这个月之前的天数,
//加上1变为这个月开始的第一天
int week = days%7==0?1:days%7+1;//开始的第一天是星期几
System.out.println("日\t一\t二\t三\t四\t五\t六"); //输出第一行(第一个星期)空出来部分
for(int i=1; i<=week; i++){
System.out.print(" \t");
} //输出第一行(第一个星期)各天
for(int i=1; i<=7-week; i++){
System.out.print(i+"\t");
} System.out.println(); //1~12月的个月天数
int monthDay = 0;
switch(month){
case 2:
if(year%4==0&&year%100!=0 || year%400==0 ){
monthDay=29;
}else{
monthDay=28;
}
break; case 4:
case 6:
case 9:
case 11:
monthDay=30;
break; default :
monthDay=31;
break;
} //输出剩下的日期,从第二周开始了,所以是8-week
for(int i=8-week; i<=monthDay; i++){ System.out.print(i+"\t"); //每七天换一行则当日期能整除7就换行
if((i+week)%7==0){
System.out.println();
}
} } /*
计算当年当月的距1900年1.1的总天数
*/
public static int getDays(int year, int month){
//判断这年是闰年或者平年,得到年的总天数
int day1=0, day2=0; for(int i=1900; i<year; i++){
if(i%4==0&&i%100!=0 || i%400==0){
day1+=366;
}else{
day1+=365;
}
} //得到月的总天数
for(int i=1; i<month; i++){
switch(i){
case 2:
if(year%4==0&&year%100!=0 || year%400==0 ){
day2+=29;
}else{
day2+=28;
}
break; case 4:
case 6:
case 9:
case 11:
day2+=30;
break; default :
day2+=31;
break;
}
} return day1+day2; } }

Java万年历,输入年月获取该年月日历表的更多相关文章

  1. java 根据年月获取当前年月的最后一天,获取当前年月有多少天

    new Date( "2019-08-" + 1)   获取2019年8月的最后一天   结果为--2019-08-31 new Date(2019, 8, 0).getDate( ...

  2. Python 学习笔记:根据输入年月获取该月的第一天和最后一天

    目的: 给定一个时间,比如:2020.02,要求返回所输入月份的第一天及最后一天,比如:('2020.02.01', '2020.02.29') 参考博客:https://blog.csdn.net/ ...

  3. [python]获取当前年月

    import time time.strftime('%Y%m',time.localtime(time.time()))#获取当前年月

  4. js 根据年月获取当月有多少天_js获取农历日期_及Js其它常用有用函数

    //根据年月获取当月有多少天 function getDaysInMonth(year, month) { debugger; //parseInt(number,type)这个函数后面如果不跟第2个 ...

  5. Java 字符终端上获取输入三种方式

    http://blog.csdn.net/hongweigg/article/details/14448731 在Java 字符终端上获取输入有三种方式: 1.java.lang.System.in ...

  6. 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token

    一.access_token简介 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等, 开 ...

  7. Java实现Internet地址获取

    Java实现Internet地址获取 代码内容 输入域名输出IPV4地址 输入IP地址输出域名 支持命令行输入 支持交互式输入 代码实现 /* nslookup.java */ import java ...

  8. Java:输入输出流 java.io包的层次结构

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  9. 23、java 通过System.getProperties()获取系统参数

    1.java的System.getProperty()方法可以获取的值 java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor. ...

随机推荐

  1. 新浪微博Android开发获取Access_token的步骤

    最近学习Android的开发,学完书本之后,决定研究如何开发一个微博客户端来实践.第一步当然是用户授权.但是新浪开放平台的说明实在写得不太清楚,用GOOGLE+研读的方法,总算是实验成功了. 这里有别 ...

  2. Linux基础--安装搭建tomcat+java+mysql

    一.安装jdk 1.可选安装yum -y install lrzsz方便传文件.(yum -y意思是所有的都选yes) yum update -y  更新yum镜像 yum list lrzsz* 列 ...

  3. Android-ActivityManager 退出整个应用

    在做Android APP 过程中,有退出整个Project的功能,以下就是接受退出整个应用的操作: ActivityManager是用来管理记录每一个Activity,最后统一用来退出结束: pub ...

  4. [LINK]List of .NET Dependency Injection Containers (IOC)

    http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx I'm trying to expand my ...

  5. jenkins+windows+springboot+.net项目自动化部署图文教程

    之前一直在linux中使用jenkins部署程序,正好现在的项目包括了winfrom程序,所以需要部署到windows系统中 jenkins官网:https://jenkins.io/ 下载之后运行j ...

  6. c#进阶之浅析委托和事件

    何为委托 加了delegate关键字,没有方法体{}的方法模版(方法列表);委托是一种类型 public void Write() { //TODO } //加上关键字delegate,去掉方法体{} ...

  7. 关于dm-file-uploader(dmUploader)上传时传参

    官网:https://github.com/danielm/uploaderDemo Online https://danielmg.org/demo/java-script/uploader/bas ...

  8. C#中Attribute/特性的使用

    类似Java的注解/Annotation 特性是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签,这个标签可以有多个.您可以通过使用特性向程序添加声明性信息.一 ...

  9. opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程

    很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...

  10. Mysql 索引原理《一》索引原理与慢查询1

    为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然 ...