A. 用java程序编一个某年某月的日历
package mycalendar;
import java.util.*;
class ViewMonth {
int month;
int year;
ViewMonth(final int displayMonth, final int displayYear) {
month = displayMonth;
year = displayYear;
}
private String checkMonth() {
String[] months = {
"1 月" , "2 月" , "3 月",
"4 月" , "5 月" , "6 月",
"7 月" , "8 月" , "9 月",
"10 月" , "11 月" , "12 月"
};
return months[month];
}
private int checkDays() {
int[] numofDays = {
31, 28, 31,
30, 31, 30,
31, 31, 30,
31, 30, 31
};
return numofDays[month];
}
/**
* 使用此方法打印该月的日历.
*/
void printMonth() {
/* 将该月份起始处的天数留空. */
int initialSpaces = 0;
try {
/* 获取月份名称. */
String monthName = checkMonth();
System.out.println();
System.out.println("\t\t\t " + year + " 年 " + monthName );
System.out.println();
} catch ( ae) {
System.out.println("超出范围 ..........");
System.exit(0);
}
GregorianCalendar cal = new GregorianCalendar(year, month, 1);
System.out.println("\t日\t一\t二\t三\t四\t五\t六");
initialSpaces = cal.get(Calendar.DAY_OF_WEEK) - 1;
/* 获取天数. */
int daysInMonth = checkDays();
/* 检查是否为闰年并为二月增加一天. */
if (cal.isLeapYear(cal.get(Calendar.YEAR)) && month == 1) {
++daysInMonth;
}
for (int ctr = 0; ctr < initialSpaces; ctr++) {
System.out.print("\t");
}
for (int ctr = 1; ctr <= daysInMonth; ctr++) {
/* 为单个日期添加空格. */
if (ctr <= 9) {
System.out.print(" ");
}
System.out.print("\t" + ctr);
/* 检查行的末尾. */
if ((initialSpaces + ctr) % 7 == 0) {
System.out.println();
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
class J7上机2 {
protected J7上机2() {
}
public static void main(String[] args) {
int month, year;
if (args.length == 2) {
System.out.println("显示日历");
System.out.println();
int mon = Integer.parseInt(args[0]);
month = mon - 1;
year = Integer.parseInt(args[1]);
} else {
Calendar today = Calendar.getInstance();
month = today.get(Calendar.MONTH);
year = today.get(Calendar.YEAR);
}
ViewMonth mv = new ViewMonth(month, year);
mv.printMonth();
}
}
给你
B. 用java编写日历,输入年月可以显示当前月份信息
/**
*日历1900年1月1日开始
*@authoryaomingzi
*
*/
publicclassCalendar{
/**
*判断某一年是否是闰年
*是闰年返回true
*@paramyear
*@return
*/
(intyear){
if(year%400==0||(year%4==0&&year%100!=0)){
returntrue;
}
returnfalse;
}
/**
*计算具体某月有多少天
*@parammonth
*@paramyear
*@return
*/
(intmonth,intyear){
intmonths[]={31,29,31,30,31,30,31,31,30,31,30,31};
//判断是否是闰年,闰年2月有29天
if(isBissextile(year)){
months[1]=29;
}else{
months[1]=28;
}
returnmonths[month-1];
}
/**
*计算具体某天距离1900年1月1日有多少天数
*@paramday
*@parammonth
*@paramyear
*@return
*/
(intday,intmonth,intyear){
//接收天数差值
intdaysSum=0;
//将距离1900年的整年天数相加
for(inti=1900;i<year;i++){
//是闰年则为366天不是为365天
daysSum+=isBissextile(i)?366:365;
}
//计算当年距离1月的整月天数
for(intj=1;j<month;j++){
daysSum+=daysOfmonthInyear(j,year);
}
//加上当月天数
daysSum+=day;
returndaysSum;
}
/**
*<p>判断具体某天是星期几
*<p>return1234560
*@paramday
*@parammonth
*@paramyear
*@return
*/
publicstaticintwhichWeek(intday,intmonth,intyear){
//1900.1.1是星期一,取余得1234560分别代表星期一到星期天
returndaysFromNovecento(day,month,year)%7;
}
/**
*打印日历--按日历格式打印某年某月的所有日期
*@parammonth
*@paramyear
*/
(intmonth,intyear){
String[]weeks={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//打印最上面的星期标记
for(inti=0;i<weeks.length;i++){
System.out.print(weeks[i]+" ");
}
System.out.println();
//计数器
intcount=0;
//打印当月日期前的水平制表判断当月1号是星期几就打印几个(0表示星期天)
for(intj=0;j<whichWeek(1,month,year);j++){
System.out.print(" ");
count++;
}
//循环次数为当月天数
for(inti=1;i<=daysOfmonthInyear(month,year);i++){
System.out.print(i+" ");
count++;
//每打印7个打印换行
if(count%7==0){
System.out.println();
}
}
//当所有日期打印完毕若最后一个打印后没有换行打印换行美化显示
if(count%7!=0){
System.out.println();
}
System.out.println();
}
/**
*打印日历--按日历格式打印某一年的所有日期
*@paramyear
*/
publicstaticvoidprintYear(intyear){
System.out.println(" "+year+"年");
//循环12个月每次调用打印月份方法
for(inti=1;i<=12;i++){
System.out.println(" "+i+"月");
printMonthOfYear(i,year);
}
}
//main方法---测试
publicstaticvoidmain(String[]args){
System.out.println(daysFromNovecento(30,10,2015));
}
}
C. java万年历源代码是多少
package org.java.test;x0dx0ax0dx0aimport java.util.Scanner;x0dx0apublic class CalendarTest{x0dx0apublic static void main(String[] args) {x0dx0aSystem.out.println("欢 迎 使 用 万 年 历");x0dx0aScanner input = new Scanner(System.in);x0dx0aSystem.out.print("\n请选择年份: ");x0dx0aint year = input.nextInt();x0dx0aSystem.out.print("\n请选择月份: ");x0dx0aint month = input.nextInt();x0dx0aSystem.out.println();x0dx0aint days = 0; // 存储当月的天数x0dx0aboolean isRn;x0dx0a/* 判断是否是闰年 */x0dx0aif (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年x0dx0aisRn = true; // 闰年x0dx0a} else {x0dx0aisRn = false;// 平年x0dx0a}x0dx0a/* 计算输入的年份之前的天数 */x0dx0aint totalDays = 0;x0dx0afor (int i = 1900; i < year; i++) {x0dx0a/* 判断闰年或平年,并进行天数累加 */x0dx0aif (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年x0dx0atotalDays = totalDays + 366; // 闰年366天x0dx0a} else {x0dx0atotalDays = totalDays + 365; // 平年365天x0dx0a}x0dx0a}x0dx0a/* 计算输入月份之前的天数 */x0dx0aint beforeDays = 0;x0dx0afor (int i = 1; i <= month; i++) {x0dx0aswitch (i) {x0dx0acase 1:x0dx0acase 3:x0dx0acase 5:x0dx0acase 7:x0dx0acase 8:x0dx0acase 10:x0dx0acase 12:x0dx0adays = 31;x0dx0abreak;x0dx0acase 2:x0dx0aif (isRn) {x0dx0adays = 29;x0dx0a} else {x0dx0adays = 28;x0dx0a}x0dx0abreak;x0dx0adefault:x0dx0adays = 30;x0dx0abreak;x0dx0a}x0dx0aif (i < month) {x0dx0abeforeDays = beforeDays + days;x0dx0a}x0dx0a}x0dx0atotalDays = totalDays + beforeDays; // 距离1900年1月1日的天数x0dx0ax0dx0a/* 计算星期几 */x0dx0aint firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6x0dx0aint temp = 1 + totalDays % 7; // 从1900年1月1日推算x0dx0aif (temp == 7) { // 求当月第一天x0dx0afirstDayOfMonth = 0; // 周日x0dx0a} else {x0dx0afirstDayOfMonth = temp;x0dx0a}x0dx0ax0dx0a/* 输出日历 */x0dx0aSystem.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");x0dx0afor (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) {x0dx0aSystem.out.print("\t"); // 输出空格x0dx0a}x0dx0ax0dx0afor (int i = 1; i <= days; i++) {x0dx0aSystem.out.print(i + "\t");x0dx0aif ((totalDays + i-1) % 7 == 5) { // 如果当天为周六,输出换行x0dx0aSystem.out.println();x0dx0a}x0dx0a}x0dx0a}x0dx0a} x0dx0a这是你要的万年历吗?