Java实现打印日历的功能
编写一个程序,显示给定年月的日历。程序提示用户输入年份和月份,然后显示该月的整个日历。
代码:
import java.util.Scanner;
public class PrintCalendar{
public static void main(String[] args){
Scanner input=new Scanner(System.in); System.out.print("Enter full year(e.g.,2011): ");
int Year=input.nextInt(); System.out.print("Enter month as a number between 1 and 12: ");
int Month=input.nextInt(); // int year=inputYear();
//int month=inputMonth();
printMonth(Year, Month);
}
/*
public static int inputYear(){
boolean flag=true;
Scanner input=new Scanner(System.in);
while(flag){
System.out.print("Enter full year(e.g.,2011): ");
int iYear=input.nextInt();
if(iYear>=1800){
flag = false;
}
}
return iYear;
} public static int inputMonth(){
boolean flag=true;
Scanner input=new Scanner(System.in);
while(flag){
System.out.print("Enter month as a number between 1 and 12: ");
int iMonth=input.nextInt();
if(iMonth>=1 && iMonth<=12){
flag = false;
}
}
return iMonth;
}*/ public static void printMonth(int year, int month){
printMonthTitle(year, month);
printMonthBody(year,month);
} public static void printMonthTitle(int year, int month){
System.out.println("\t" + getMonthName(month)+"\t" +year);
System.out.println("-----------------------------------");
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
}
public static String getMonthName(int month){
String monthName="";
switch (month){
case 1: monthName="January"; break;
case 2: monthName="February"; break;
case 3: monthName="March"; break;
case 4: monthName="April"; break;
case 5: monthName="May"; break;
case 6: monthName="June"; break;
case 7: monthName="July"; break;
case 8: monthName="August"; break;
case 9: monthName="September"; break;
case 10: monthName="October"; break;
case 11: monthName="November"; break;
case 12: monthName="December"; break;
} return monthName;
} public static void printMonthBody(int year, int month){ //Get start day of the week for the first date int the month
int startDay=getStartDay(year,month); //Get number of days in the month
int numberOfDaysInMonth = getNumberOfDaysInMonth(year,month); //Pad space before the first day of the month
int i=0;
for(i=1; i< startDay; i++){
System.out.print(" ");
}
for(i=1; i<=numberOfDaysInMonth;i++){
System.out.printf("%-4d", i); if((i+startDay-1)%7==0)
System.out.println();
}
System.out.println();
} /** Get the start day of month/1/year */
public static int getStartDay(int year, int month){
final int START_DAY_FOR_JAN_1_1800 = 3; //Get the total number of days from 1/1/1800 to month/1/year
int totalNumberOfDays= getTotalNumberOfDays(year,month); //Return the start day for month/1/year
return (totalNumberOfDays+START_DAY_FOR_JAN_1_1800)%7;
} /** Get the total number of days from January 1, 1800; */
public static int getTotalNumberOfDays(int year, int month){
int total = 0; //get total number of days from 1800 to 1/1/year
for(int i = 1800; i<year; i++){
if(isLeapYear(i))
total = total + 366;
else
total = total + 365;
} //add days from January to the month prior to the calendar month
for(int i = 0; i<month;i++)
total +=getNumberOfDaysInMonth(year, i); return total;
} /** Get the number of days in a month */
public static int getNumberOfDaysInMonth(int year, int month){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 31;
if(month==4||month==6||month==9||month==11)
return 30;
if(month==2)
return isLeapYear(year)?29:28;
return 0;
} /** Determine if it is a leap year */
public static boolean isLeapYear(int year){
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
}
执行效果:

Java实现打印日历的功能的更多相关文章
- 使用java 打印日历
package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...
- Atitit.java swing打印功能 api attilax总结
Atitit.java swing打印功能 api attilax总结 1. 打印方式有三种:2 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.2 ...
- Java实现打印功能-AWT Graphics2D
Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Gra ...
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- Java实现打印功能
用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用Graphics2D直接输出直 ...
- 【java】java自带的java.util.logging.Logger日志功能
偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...
- 常用Java API之Scanner:功能与使用方法
Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...
- Java如何打印日志
以下为<正确的打日志姿势>学习笔记. 什么时候打日志 1.程序出现问题,只能通过 debug 功能来定位问题,很大程度是日志没打好.良好的系统,通过日志就能进行问题定位. 2.if-els ...
- Python学习实践-----打印日历
使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...
随机推荐
- java求0~100的质数(素数)
质数的概念: 简单的来说就是一个数从2开始取模到(求余数)自身的值,如果取模后余数一直不等于0那么这个数就是质数(素数). 如 7 7%2 7%3 7%4 7%5 7%6 ...
- thinkphp5和thinkphp3.2.3中URL重写出现No input file specified
查询后解决办法是打开public目录下的.htaccess文件,把:RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 改为:RewriteRule ^(.*)$ i ...
- [Leetcode 452] 最少需要射出多少支箭Minimum Number of Arrows to Burst Balloons 贪心 重载
[题目] There are a number of spherical balloons spread in two-dimensional space. For each balloon, pro ...
- # -*- coding: utf-8 -*-
-- coding: utf-8 -- import scrapy from jobscrawler_qianchengwuyou.items import JobscrawlerQianchengw ...
- Python中的 *args 和 **kwargs
基本概念 Python支持可变参数,最简单的方法莫过于使用默认参数. def test_defargs(one, two=2): # 参数one没有默认值,two的默认值为2 print('Requi ...
- java基础知识—数组
1.数组:是一个变量,存储相同数据类型的一组数据. 2.数据的优点:减少代码量.易查找. 3.数组的使用步骤: 1)声明数组:int scores []: 2)开辟空间:scores = new in ...
- python复习购物车程序
个人学习总结: 无他,唯手熟尔!多敲多练才是王道 python 第三课 元组的灵活运用&字符串的诸多操作 Program01 '''时间 2018年2月12日12:15:28目的 购物车程序 ...
- DeepCTR专题:Neural Factorization Machines 论文学习和实现及感悟
papers地址:https://arxiv.org/pdf/1708.05027.pdf 借用论文开头,目前很多的算法任务都是需要使用category feature,而一般对于category f ...
- python爬虫基础_requests和bs4
这些都是笔记,还缺少详细整理,后续会更新. 下面这种方式,属于入门阶段,手动成分比较多. 首先安装必要组件: pip3 install requests pip3 install beautifuls ...
- python web架构初步认识
---恢复内容开始--- #主入口,Python解释器从这开始执行:if __name__ == '__main__': run() 内部执行过程: #引用socket模块 import socket ...