Java编写程序,输入年份,输出本年度各月份日历

importjava.util.*;publicclassTest{publicstaticvoidmain(Stringargs[]){Calendartime=Cal... import java.util.*;

public class Test {
public static void main(String args[]) {
Calendar time = Calendar.getInstance();
int year, month ;
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
year = sc.nextInt();
time.set(Calendar.YEAR, year);
int[] ap = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };// 平年每月天数
int[] ar = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };// 闰年每月天数
int week = time.get(Calendar.DAY_OF_WEEK);
int len = week - 1;
int aMonth=0;
// 判断是否为闰年
for(int i=0;i<12;i++){
if ((year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0)) {
aMonth = ar[i];
System.out.println("\t日 一 二 三 四 五 六 第 "+(i+1)+" 月");
System.out.println("---------------------------------------------------");
for (int j = 1; j <= len; j++) {
System.out.print("\t");
}
int t = len;
for (int k = 1; k <= aMonth; k++) {
System.out.print("\t" + k);
t++;
if (t == 7) {
System.out.println();
t = 0;
}
if(k==aMonth){
System.out.println();
}
}
len = t;
} else {
aMonth = ap[i];
}
}

}
}
这是我写的代码,但是只能输出2012年的,输入其他年份都没有输出,而且2012年的日和星期对不起来,请高手帮我看看怎么改
展开
 我来答
百度网友9308069
推荐于2017-11-24 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1931万
展开全部
写了个简明的,
import java.util.Calendar;
import java.util.Scanner;

public class Test {
static public void main(String 参数[]){
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;i<wday-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
winters1224
2012-01-18 · TA获得超过398个赞
知道小有建树答主
回答量:266
采纳率:0%
帮助的人:39万
展开全部
判断一下闰年,根据是否闰年来确定循环边界是366还是367
public void test() {
Calendar c = Calendar.getInstance();

String[] week = new String[] { "周六", "周日", "周一", "周二", "周三", "周四", "周五" };

c.set(2012, 0, 1);

for (int i = 0; i < 366; i++) {
System.out.println(c.get(Calendar.YEAR) + "-"
+ (c.get(Calendar.MONTH) + 1) + "-"
+ c.get(Calendar.DAY_OF_MONTH) + " "
+ week[c.get(Calendar.DAY_OF_WEEK) % 7]);
c.add(Calendar.DATE, 1);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
降妖伏魔照妖镜
2012-01-18
知道答主
回答量:15
采纳率:0%
帮助的人:15.3万
展开全部
百度吞了之前的回答,这么才发
没有用你的算法,重新整理了
import java.util.Calendar;
import java.util.Scanner;

public class Test {
static public void main(String 参数[]){
Calendar c = Calendar.getInstance();
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year= sc.nextInt();
c.set(year, Calendar.JANUARY, 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;i<wday-1;i++) System.out.print(" \t");
}
System.out.print(mday+"\t");
if(wday==7) System.out.println();
c.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tan4856423
2012-01-17 · TA获得超过170个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:205万
展开全部
我看着都头疼,你还是先理清这个的关系吧。如果你想快点的话,系统有个Date类,直接注入时间就可以返回。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式