java万年历,获取该年月日历表

这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示:

输入年份和月份,打印出这个月的日历表
    1.1900年1月1日是星期一
    2.计算输入的年份距离1900年有多少天再计算当年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;
 }
 }

以上是万年历代码实现过程,希望对大家有所帮助。

(0)

相关推荐

  • Java编写多功能万年历程序的实例分享

    这里的万年历制作主要用到了Calendar类和GregorianCalendar类,我们先来回顾一下基础知识: 基础部分 一.Calendar类. 1,主要字段: YEAR(年份).MONTH(月份从0开始).DATE(一月的某天).HOUR(指示上午或下午的小时).HOUR_F_DAY(指示一天中的小时.).DAY_OF_WEEK (一个星期中的某天).DAY_OF_MONTH(一个月中的某天).DAY_OF_YEAR(一年中的某天).DAY_OF_WEEK _IN_MONTH(一个月中的第几

  • JAVA实现的简单万年历代码

    本文实例讲述了JAVA实现的简单万年历.分享给大家供大家参考,具体如下: import java.util.Scanner; public class PrintCalendar { public static void main(String[] args) { int years = 0; int month = 0; int days = 0; boolean isRun = false; //從控制台輸入年,月 Scanner input = new Scanner(System.in)

  • Java 实现万年历总结

    一,Java实现万年历的代码: package calendar; import java.util.Scanner;//日历项目 public class RiLi{ public static void main(String[] args){ Scanner A=new Scanner(System.in); System.out.println("请输入年份:"); int year=A.nextInt(); System.out.println("请输入月份:&qu

  • Java基础之打印万年历的简单实现(案例)

    问题:输入年,月,打印对应年月的日历. 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星期四,现在大多的手机的日历功能只能显示到1970年1月1日这一天; 2,要想打印某年某月的日历,首先应该计算出这个月1号是星期几? 解决1号是星期几? 2.1:先计算出年天数,即截至这一年1月1号的天数,用for循环,从1970年开始,闰年+366,平年+365; 2.2:计算出月天数,即截至本月1号的天数,用for循环,从1月份开始,算出月

  • java万年历,获取该年月日历表

    这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表     1.1900年1月1日是星期一     2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天     3.总天数%7得出从星期几开始     注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元.     so,在本程序中不考了1900年以前的年份了.有兴趣的可以自己研究下. import java.uti

  • 非常实用的java万年历制作方法

    完成万年历的制作需要用到数组.循环等知识. 编程计算输入的月份距离1900年1月1日的天数,求出当前月之前的总天数(不包含当前输入月分的天数,) 编程计算输入月份的第一天是星期几,(公式:星期几=1+天数差%7). import java.util.Scanner; public class Calendar{ public static void main(String[] args){ int year; int month; int totaldays=0; Scanner sc=new

  • Java实现获取某年某月第一天/最后一天的方法

    本文实例讲述了Java实现获取某年某月第一天/最后一天的方法.分享给大家供大家参考,具体如下: Java获取某年某月的第一天 设计源码 FisrtDayOfMonth.java: /** * @Title:FisrtDayOfMonth.java * @Package:com.you.freemarker.model * @Description:获取某年某月的第一天 * @author:Youhaidong(游海东) * @version V1.0 */ package com.you.fre

  • Java编程获取文件列表及子文件目录的方法(非递归)

    废话不谈,直接进入正题,理解见代码注释. // 非递归 public List<String> scanFiles(String path) { List<String>filePaths = new ArrayList<String>(); LinkedList<File> list = new LinkedList<File>(); File dir = new File(path); File[] file = dir.listFiles(

  • java正则表达式获取指定HTML标签的指定属性值且替换的方法

    实例如下: public static String repDomain(String source, String domain, String element, String attr) { String img = ""; Pattern p_image; Matcher m_image; String regEx_img = "<" + element + "[^<>]*?\\s" + attr + "=['\

  • 利用Java如何获取IP与机器名方法示例

    前言 本文详细给大家介绍了关于利用Java如何获取IP与机器名的方法示例,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: 一.通过IP获取机器名 or 通过机器名获取ip host :主机        hostAddress :ip       hostName:机器名 import java.net.InetAddress; import java.net.UnknownHostException; public class Test01 { public static voi

  • Java中获取类路径classpath的简单方法(推荐)

    如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

  • Java编程获取当前屏幕分辨率的方法示例

    本文实例讲述了Java编程获取当前屏幕分辨率的方法.分享给大家供大家参考,具体如下: /** * This class implements the functionality of fetching the size of the screen */ package com.leo.util; /** * @author Leo Share * @since 07/16/2007 * @version 1.0 */ class ScreenSize{ private int screenWid

  • Java简单获取字符串像素的方法

    本文实例讲述了Java简单获取字符串像素的方法.分享给大家供大家参考,具体如下: 计算字符串的像素长度与高度: Graphics2D g = (Graphics2D)Toolkit.getDefaultToolkit(). getImage("imgname").getGraphics(); // 设置大字体 Font font = new Font("楷体", Font.ITALIC | Font.BOLD, 72); g.setFont(font); FontR

  • Java编程获取经纬度之间距离的方法

    本文实例讲述了Java编程获取经纬度之间距离的方法.分享给大家供大家参考,具体如下: public class GeoUtil { /** * 根据经纬度和距离返回一个矩形范围 * * @param lng * 经度 * @param lat * 纬度 * @param distance * 距离(单位为米) * @return [lng1,lat1, lng2,lat2] 矩形的左下角(lng1,lat1)和右上角(lng2,lat2) */ public static double[] ge

随机推荐