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這是你要的萬年歷嗎?