寫了個簡明的,
公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出臨淄免費做網(wǎng)站回饋大家。
import java.util.Calendar;
import java.util.Scanner;
public class Test {
static public void main(String 參數(shù)[]){
Calendar c = Calendar.getInstance();
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份:");
int year= sc.nextInt();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DAY_OF_MONTH, 1);
while(c.get(Calendar.YEAR)==year){
int wday=c.get(Calendar.DAY_OF_WEEK);
int mday=c.get(Calendar.DAY_OF_MONTH);
if(mday==1){
System.out.println("\n日\t一\t二\t三\t四\t五\t六\t第"+(c.get(Calendar.MONTH)+1)+"月");
System.out.println("---------------------------------------------------");
for(int i=0;iwday-1;i++) System.out.print(" \t");
}
System.out.print(mday+"\t");
if(wday==7) System.out.println();
c.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
=======
請輸入年份:
2012
日 一 二 三 四 五 六 第1月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
日 一 二 三 四 五 六 第2月
---------------------------------------------------
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29
日 一 二 三 四 五 六 第3月
---------------------------------------------------
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
日 一 二 三 四 五 六 第4月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
日 一 二 三 四 五 六 第5月
---------------------------------------------------
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
日 一 二 三 四 五 六 第6月
---------------------------------------------------
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
日 一 二 三 四 五 六 第7月
---------------------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
日 一 二 三 四 五 六 第8月
---------------------------------------------------
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
日 一 二 三 四 五 六 第9月
---------------------------------------------------
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
日 一 二 三 四 五 六 第10月
---------------------------------------------------
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
日 一 二 三 四 五 六 第11月
---------------------------------------------------
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
日 一 二 三 四 五 六 第12月
---------------------------------------------------
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
import java.util.Scanner; public class Wan{ public static void main(String[] args){ Scanner name = new Scanner(System.in); System.out.print("請輸入要查詢的年份:"); int year = name.nextInt(); System.out.print("請輸入該年的月份"); int month = name.nextInt(); } //累加 該年至輸入的月份 天數(shù) //比如 輸入2009年的 3月分 // 那就累加 2009年的1月至 3月1號的總天數(shù) public void sumDay(int year,int month){ int day = 0; int sumDay = 0; for(int i = 1;i=month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if(year % 4 == 0 || year % 400 == 0 year %100!=0){ day = 29; }else{ day = 28; } break; default: day = 30; } //最后一個月份不要累加 因為我們只是要算到該月的一號就可以了 if(i month){ sumDay += day; } } //累加 2000年到該年的一月一號天數(shù) for(int i = 2000;iyear;i++){ if( i % 4 == 0 || i %400== 0 i % 100 != 0){ sumDay += 366; }else{ sumDay += 365; } } //求該月一號為星期幾 int week = sumDay % 7 +1; if(week == 7){ week = 0; } } public void fomatDate(int week,int day){ int g = 0; for(int i = 0;iweek;i++){ System.out.print("\t"); } for(int i = 1;i=day;i++){ System.out.print(i+"\t"); g = week + i; if(g % 7 == 0){ System.out.println(); } } } } 給點分哈 寫得好累
我給你貼上我在java核心技術中看到的代碼吧,當然沒有輸入年份和月份,是按照當前時間創(chuàng)建的,寫有我寫的注釋,應該能看的懂
/*
* 2012年5月13日10:37:58
* 日歷程序
* Function:
* 顯示當前月份的日歷
* 總結
* 1. 0-11分別代表1-12月
* 1-7分別代表周日-周六
* 2. 使用GregorianCalendar對象的get方法(參數(shù))獲取月,日,年等信息
* 3.
*/
import java.text.DateFormatSymbols;
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
//construct d as current date構造一個日期
GregorianCalendar d = new GregorianCalendar();
//獲取今天是這個月的第幾天
int today = d.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH作為參數(shù)調用,得到今天是這個月的第幾天
int month = d.get(Calendar.MONTH); //月份
d.set(Calendar.DAY_OF_MONTH, 1); //設置d的日期是本月的1號
int weekDay = d.get(Calendar.DAY_OF_WEEK); //獲取當天位于本星期的第幾天,也就確定了星期幾,值的范圍是1-7
int firstDayOfWeek = d.getFirstDayOfWeek(); //獲取一星期的第一天,我們得到的是Calendar.SUNDAY,因為我們一星期的第一天是周日
int indent = 0; //為了定位本月第一天,定義索引
while (weekDay != firstDayOfWeek) {
//注意,月份用0-11代表1-12月,為了清晰起見,使用常量代替,下面獲取月份得到的實際是當前月-1的值,所以我們要加1
//System.out.printf("當前星期的第%d天,位于當月的第%d天, 現(xiàn)在是%d月\n",
// weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1); //Test Code
indent++;//縮進個數(shù)+1
d.add(Calendar.DAY_OF_MONTH, -1);//當前天數(shù)-1,如果現(xiàn)在是1號,則執(zhí)行本條代碼后,時間變?yōu)樯弦粋€月最后一天
weekDay = d.get(Calendar.DAY_OF_WEEK); //重新獲取當天位于本星期的第幾天
}
String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//獲取簡短形式的星期字符串數(shù)組
//System.out.println(weekDayNames.length);getShortWeekdays()得到的數(shù)組的長度是8,下標為0的是沒有值1為星期日...7為星期六
//注釋代碼1
//Java核心技術的代碼
/*
do {
//System.out.printf("%4s", weekDayNames[weekDay]); //經(jīng)過上面定義索引,weekDay代表的是本星期日
d.add(Calendar.DAY_OF_MONTH, 1); //天數(shù)加1
weekDay = d.get(Calendar.DAY_OF_WEEK); //重新獲得weekDay的值
} while (weekDay != firstDayOfWeek); //當循環(huán)完一個星期后,這里判斷不成立,退出循環(huán)
*/
//我寫的代碼,替換上面注釋代碼1
for (int i=1; iweekDayNames.length; i++)//打印星期標題
System.out.printf("%3s\t", weekDayNames[i]);//引號內是一個全角的空格,因為是中文版,不是書上英文環(huán)境,中文和空格對于不上,這里我們用\t解決
//System.out.printf("%3s ", weekDayNames[i]); //方式2
System.out.println();//換行
for (int i=1; i=indent; i++)//確定一星期的一天位置,利用上面indent
System.out.printf("\t");//如用方式2,則這里內容是四個全角空格
//實現(xiàn)輸出日期
d.set(Calendar.MONTH, month);
d.set(Calendar.DAY_OF_MONTH, 1);
do {
//print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if (day == today)
System.out.print("*");
System.out.print("\t");
d.add(Calendar.DATE, 1);//天數(shù)加1
weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay
if (weekDay == firstDayOfWeek) //如果這天等于星期天則換行
System.out.println();
} while (d.get(Calendar.MONTH) == month);
}
}
class CalendarList{
int year,month;
int dayNum,i,num,count=0;
Calendar objCalendar;
int[] arrDayNum=;
CalendarList(){
objCalendar=Calendar.getInstance();
this.year=objCalendar.get(Calendar.YEAR);
this.month=objCalendar.get(Calendar.MONTH)+1; //要+1
}
CalendarList(String args0,String args1){
this.year=Integer.parseInt(args1);
this.month=Integer.parseInt(args0);
objCalendar=Calendar.getInstance();//這里沒有get
objCalendar.set(Calendar.YEAR,year);//set是這樣用的
objCalendar.set(Calendar.MONTH,month-1);
}
void display(){
System.out.println("\t\t\t"+year+"年"+month+"月");
System.out.println("日 一 二 三 四 五 六"); //每個空3個空格
num=objCalendar.get(Calendar.DAY_OF_WEEK);
if ((year/4==0year/100!=0)||(year/400==0)){
arrDayNum[1]+=1;
}
for (i=1;i=12;i++){
if (i==month){
dayNum=arrDayNum[i-1];
break;
}
}
for(i=1;i=num;i++){
System.out.print(" ");//5個空格
count++;
}
for (i=1;i=dayNum;i++){
System.out.print(i10?" "+i+" ":i+" "); //自己改了下 ,空格數(shù):1,3,3
count++;
if(count==7){
System.out.println();
count=0;
}
}
System.out.println ();
}
}
public class MainClass {
public static void main(String[] args) {
CalendarList objCalendar=new CalendarList();
CalendarList objCalendar1=new CalendarList("11","2007");
objCalendar.display();
objCalendar1.display();
}
}
按照你的要求編寫的Java日歷驗證程序如下
UI.java
import?java.util.Scanner;
public?class?UI?{
static?Scanner?sc=new?Scanner(System.in);
public?static?int?askInt(String?s){
System.out.print(s);
return?sc.nextInt();
}
public?static?void?println(String?s){
System.out.println(s);
}
}
EE.java
public?class?EE?{
public?void?validateDateCore(){
int?year?=UI.askInt("Enter?the?year:?");
int?month=UI.askInt("Enter?the?month:?");
int?day=UI.askInt("Enter?the?day:?");
if(year??1){
UI.println("The?year?is?not?a?valid?number.");
return;
}
if(month1?||?month12){
UI.println("The?month?is?not?a?valid?number.");
return;
}
int?monthDay=0;
switch(month){
case?1:
case?3:
case?5:
case?7:
case?8:
case?10:
case?12:monthDay=31;break;
case?4:
case?6:
case?9:
case?11:monthDay=30;break;
case?2:
if((year%4==0??year%100!=0)?||?year%400==0){
monthDay=29;
}else{
monthDay=28;
}
break;
}
if(day1?||?daymonthDay){
UI.println("The?day?is?not?a?valid?number.");
return;
}else{
UI.println("It?is?"+day+"/"+month+"/"+year+".");
}
}
public?static?void?main(String[]?args)?{
new?EE().validateDateCore();
}
}
運行結果