`

控制台日历打印-Java小程序

    博客分类:
  • Java
阅读更多
package com.demo.yongjian;

import java.util.Scanner;

public class PrintCalendar {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Enter full year (e.g.,2001): ");
		int year = input.nextInt();

		System.out.println("Enter month in month between 1 and 12:");
		int month = input.nextInt();

		printMonth(year, month);
	}

	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("      " + getMonthName(month) + " " + year);
		System.out.println("--------------------------");
		System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
	}

	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";
		}
		return monthName;
	}
	
	public static void printMonthBody(int year, int month){
		int startDay = getStartDay(year, month);
		int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);
		int i = 0;
		for(i = 0; i < startDay; i++)
			System.out.print("    ");
		for(i = 1; i <= numberOfDaysInMonth; i++){
			System.out.printf("%4d", i);
			if((i + startDay) % 7 == 0)
				System.out.println();
		}
		System.out.println();
	}
	
	public static int getStartDay(int year, int month){
		final int START_DAY_FOR_JAN_1_1800 = 3;//初始化为3
		int totalNumberOfDays = getTotalNumberOfDays(year, month);
		return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7;
		
	}
	
	public static int getTotalNumberOfDays(int year, int month){
		int total = 0;
		for(int i = 1800; i < year; i++)
			if(isLeapYear(i))
				total = total + 336;
			else
				total = total + 365;
		for(int i = 1; i < month; i++)
			total = total + getNumberOfDaysInMonth(year, i);
		return total;
	}
	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;
	}
	
	public static boolean isLeapYear(int year){
		return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
	}
}

 

分享到:
评论

相关推荐

    控制台的小程序

    在IT领域,控制台小程序是一种基于命令行界面的程序,它们通常用于教学目的,因为它们简单易懂,便于初学者入门编程。控制台程序不依赖于图形用户界面(GUI),而是通过文字输入和输出进行交互,这使得它们的开发和...

    java控制台实现可视化日历小程序

    本文介绍了一个使用Java语言在控制台上实现的可视化日历小程序的开发。这个小程序能够让用户在控制台中看到一个日历的布局,并且通过特定的格式输出日期信息,包括当前日期的高亮显示。 在介绍这个程序之前,我们...

    日历程序,初学java小程序

    根据给定的文件信息,我们可以总结出以下关于Java编程语言中的日历程序的关键知识点: ### 一、程序功能概述 这段代码实现了一个简单的日历程序,可以计算指定年份和月份的日历布局,并打印出相应的日历。主要功能...

    java源码包---java 源码 大量 实例

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java小程序实现“万年历”

    在Java编程语言中,开发一个"万年历"小程序是一个典型的日期和时间处理问题,它涉及到日历系统、月份计算以及日期的展示。这个项目对于Java初学者来说,是一个很好的实践机会,因为它涵盖了许多基础概念,同时也能...

    Java做的小日历

    【Java做的小日历】是一个基于Java编程语言开发的日历应用程序。这个项目旨在提供一个简单易用的日历功能,可能是为了展示Java编程基础或者作为学习Java GUI编程的一个实例。源码的提供使得开发者可以深入理解如何在...

    java源代码:万年历小程序

    这个"java源代码:万年历小程序"是一个很好的学习资源,它能够展示如何用Java实现一个功能完备的日历应用,覆盖从公元1年到公元9999年的日期显示。 首先,我们来看看万年历小程序的核心知识点: 1. **日期和时间...

    java小程序

    - Java小程序可能使用控制台输出或者GUI来呈现日历,如果是GUI,可能会用到Java Swing或JavaFX库。 2. **学生图书管理**: - 这是一个典型的数据库管理系统,用于存储、检索和更新学生和图书的信息。 - 可能使用...

    java编程实现的万年历小程序

    Java编程实现的万年历小程序是一个实用的工具,它能够显示任何年份的日历信息,覆盖从公元元年到未来的数千年。这个程序基于Java语言的强大学习社区和广泛的应用场景,使得开发者可以轻松地在不同的操作系统上运行,...

    java程序设计实践教程

    - Java Applet是一种可以在Web浏览器中运行的小应用程序。 - 了解Applet的基本结构,如继承自`java.applet.Applet`类。 - 掌握如何通过HTML文件嵌入Applet到网页中。 #### 二、基本输入输出 - **标准输入输出:...

    java日历

    最后,压缩包中的“实用java小程序-java 日历”可能包含了示例代码,这些代码可能展示了如何创建一个简单的日历应用,如控制台输出日历、用户交互选择日期等。 总结起来,Java的`Calendar`类和Java 8的新日期API...

    java编写的日历代码

    控制台输入年份和月份, 控制台打印此月份的日历。 初学小程序,有不足请见谅~

    跪求的java小日历

    【Java小日历程序详解】 Java编程语言以其强大的功能和跨平台性,成为了软件开发领域中的热门选择。在初学者的编程旅程中,构建一个小日历应用是一个经典的实践项目,它可以帮助理解面向对象编程的基本概念,如类、...

    JAVA 日历程序

    在Java编程语言中,日历(Calendar)程序是用于处理日期和时间的实用工具。这个简单的日历程序可能包括创建、展示以及操作日期的各种功能,对于初学者来说,这是一个很好的学习项目,因为它涵盖了面向对象编程、类库...

    java项目万年历

    【Java项目万年历】是一个基于Java编程语言开发的小型应用程序,它的主要功能是生成并显示公元后的任意一年任意一月的日历。这个项目对于学习Java编程,尤其是日期和时间处理,以及控制台界面设计,提供了很好的实践...

    JAVA方法调用万年历

    3. **控制台输出**:在命令行界面输出万年历,可以使用`System.out.println()`或其他打印格式化方法,如`printf()`,来按照日历的格式排列日期。 4. **循环和条件判断**:遍历年份、月份和日期,需要使用循环(for...

    Java零基础基础教程

    - 运行程序,查看控制台输出结果。 #### 三、Java基本语法 - **数据类型**: - 基本类型:包括整型(int)、浮点型(float, double)、字符型(char)等。 - 引用类型:数组(Array)、类(Class)、接口(Interface)等。 ...

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    java源码包3

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java源码包2

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

Global site tag (gtag.js) - Google Analytics