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的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
在Java编程语言中,开发一个"万年历"小程序是一个典型的日期和时间处理问题,它涉及到日历系统、月份计算以及日期的展示。这个项目对于Java初学者来说,是一个很好的实践机会,因为它涵盖了许多基础概念,同时也能...
【Java做的小日历】是一个基于Java编程语言开发的日历应用程序。这个项目旨在提供一个简单易用的日历功能,可能是为了展示Java编程基础或者作为学习Java GUI编程的一个实例。源码的提供使得开发者可以深入理解如何在...
这个"java源代码:万年历小程序"是一个很好的学习资源,它能够展示如何用Java实现一个功能完备的日历应用,覆盖从公元1年到公元9999年的日期显示。 首先,我们来看看万年历小程序的核心知识点: 1. **日期和时间...
- Java小程序可能使用控制台输出或者GUI来呈现日历,如果是GUI,可能会用到Java Swing或JavaFX库。 2. **学生图书管理**: - 这是一个典型的数据库管理系统,用于存储、检索和更新学生和图书的信息。 - 可能使用...
Java编程实现的万年历小程序是一个实用的工具,它能够显示任何年份的日历信息,覆盖从公元元年到未来的数千年。这个程序基于Java语言的强大学习社区和广泛的应用场景,使得开发者可以轻松地在不同的操作系统上运行,...
- Java Applet是一种可以在Web浏览器中运行的小应用程序。 - 了解Applet的基本结构,如继承自`java.applet.Applet`类。 - 掌握如何通过HTML文件嵌入Applet到网页中。 #### 二、基本输入输出 - **标准输入输出:...
最后,压缩包中的“实用java小程序-java 日历”可能包含了示例代码,这些代码可能展示了如何创建一个简单的日历应用,如控制台输出日历、用户交互选择日期等。 总结起来,Java的`Calendar`类和Java 8的新日期API...
控制台输入年份和月份, 控制台打印此月份的日历。 初学小程序,有不足请见谅~
【Java小日历程序详解】 Java编程语言以其强大的功能和跨平台性,成为了软件开发领域中的热门选择。在初学者的编程旅程中,构建一个小日历应用是一个经典的实践项目,它可以帮助理解面向对象编程的基本概念,如类、...
在Java编程语言中,日历(Calendar)程序是用于处理日期和时间的实用工具。这个简单的日历程序可能包括创建、展示以及操作日期的各种功能,对于初学者来说,这是一个很好的学习项目,因为它涵盖了面向对象编程、类库...
【Java项目万年历】是一个基于Java编程语言开发的小型应用程序,它的主要功能是生成并显示公元后的任意一年任意一月的日历。这个项目对于学习Java编程,尤其是日期和时间处理,以及控制台界面设计,提供了很好的实践...
3. **控制台输出**:在命令行界面输出万年历,可以使用`System.out.println()`或其他打印格式化方法,如`printf()`,来按照日历的格式排列日期。 4. **循环和条件判断**:遍历年份、月份和日期,需要使用循环(for...
- 运行程序,查看控制台输出结果。 #### 三、Java基本语法 - **数据类型**: - 基本类型:包括整型(int)、浮点型(float, double)、字符型(char)等。 - 引用类型:数组(Array)、类(Class)、接口(Interface)等。 ...
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...