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 ...
随机推荐
- Python标准库--time模块的详解
time模块 - - -时间获取和转换 在我们学习time模块之前需要对以下的概念进行了解: 时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08 ...
- 动态规划Dynamic Programming
动态规划Dynamic Programming code教你做人:DP其实不算是一种算法,而是一种思想/思路,分阶段决策的思路 理解动态规划: 递归与动态规划的联系与区别 -> 记忆化搜索 -& ...
- 使用机房的网线 连接到自己的电脑 解决Internet没有访问权限问题
在机房把机子上的网线拔了,插在自己的笔记本上.发现并不能用,能识别Internet,但是没有访问权限. 解决办法: 去查看机房的机子的IP地址和DNS地址,就是那根网线原本连接的那台机.(网线先别拔出 ...
- tp备份数据
<?php namespace Chenlin2103\Controller; class BaksqlController extends MainController{ public $co ...
- 关于Python课程的思考和意见
老师您好,我是信息管理与信息系统专业的一名学生,由于专业原因,我在大一下学期第一次接触Python,并因为它简洁的语言和强大的函数库所吸引,刚好在选课时得知学校有开python选修课,就慕名而来. 首 ...
- docker学习常用指令---第五章节
前面我们了解了docker的基本概念,和docker镜像,端口相关的内容.在具体的实际操作过程中,我们需要了解一些相关的docker操作指令. 一.Docker save指令 指令功能:将指定镜像保存 ...
- linux下ftp权限控制
需求背景: 1.创建2个账号给联调的系统使用读取我方服务器提供的文件信息.只允许看到限定的目录,对目录下的文件只有只读权限,禁止shell登录. 2.创建一个内部账号提供文件信息,只允许看到限定的目录 ...
- L345 大脑复生
Yale Researchers Build BrainEx Machine to Restore Brain Function After Death Researchers at Yale Uni ...
- linux bash 命令
export:显示所有的环境变量,如果你想获取某个变量的详细信息,使用 echo $VARIABLE_NAMEv whereis:使用系统自动构建的数据库来搜索可执行文件,源文件和手册页面 which ...
- 编辑器测试-TinyMCE
一级标签 二级便签 引用段落1231456456 普通段落 链接 简书 https://www.jianshu.com/p/edee77363855 import pygame WINWIDTH = ...