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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编写程序,输入年份,输出本年度各月份日历相关的知识,希望对你有一定的参考价值。

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年的日和星期对不起来,请高手帮我看看怎么改

写了个简明的,
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
参考技术A 判断一下闰年,根据是否闰年来确定循环边界是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);

参考技术B 百度吞了之前的回答,这么才发
没有用你的算法,重新整理了
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);


参考技术C 我看着都头疼,你还是先理清这个的关系吧。如果你想快点的话,系统有个Date类,直接注入时间就可以返回。

java实验之打印万年历

打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一),要求:

(1)编写一个方法判断闰年;

(2)编写一个方法判断某年某月有多少天;

(3)编写一个方法计算某年某月前距离1900年1月1日的总天数;(4)编写一个输出某年某月日历的方法;

(5)编写一个测试方法。

 

package calendar;
import java.util.Scanner;
public class calendar {
public static void main(String args[]){
int year,month,sum,sum1;
System.out.print("请输入年份:\t");
for(;;){
year=getInput();
if(year>=1900)
break;
else
System.out.println("输入错误,请重新输入!");

}
System.out.print("请输入月份:\t");
for(;;){
month=getInput();
if(month>=1&&month<=12)
break;
else
System.out.println("输入错误,请重新输入!");
}
display(year,month);
}
public static int getInput(){ //输入数据
Scanner scan=new Scanner(System.in);
int i=0;
i=scan.nextInt();
return i;
}
public static int judge(int i){ //判断是否闰年
if(i%400==0||(i%100!=0&&i%4==0))
return 0;
else
return 1;
}
public static int monthTotal(int i,int j){ //判断i年j月有多少天
int leapyear[]={31,29,31,30,31,30,31,31,30,31,30,31};
int noleapyear[]={31,28,31,30,31,30,31,31,30,31,30,31};
int n,m;
n=judge(i);
if(n==0)
m=leapyear[j-1];
else
m=noleapyear[j-1];
return m;
}
public static int yearTotal(int i,int j){ //判断i年j月前距1900年1月1日有多少天
int n,m=0;
for(int yearNumber=1900;yearNumber<i;yearNumber++){
if(i==1900)
break;
n=judge(yearNumber);
if(n==0)
m+=366;
else
m+=365;
}
for(int monthYear=1;monthYear<j;monthYear++){
if(j==1)
break;
m+=monthTotal(i,monthYear);
}
return m;
}
public static void display(int i,int j){ //输出i年j月的日历
int sum,sum0,ss=0;
sum0=yearTotal(i,j);
sum=1+sum0%7;
System.out.println("-----"+i+"年"+j+"月-----");
System.out.println(" 日 一 二 三 四 五 六 ");
for(int z=1;z<=sum+monthTotal(i,j);z++){
if(z<=sum){
System.out.print(" ");
ss+=1;
}
else{
System.out.print(z-sum+" ");
ss+=1;
if(z-sum<10)
System.out.print(" ");
}
if(ss%7==0)
System.out.println();

}
}

}























































































以上是关于Java编写程序,输入年份,输出本年度各月份日历的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,提示用户输入年份和该年第一天的星期,在控制台上显示该年的日历表。

用java程序写出 接收一个年份和一个月份,判断得出该月的总天数。(用if语句完成)

c语言编程:输入一个年份,判断其是不是为闰年,并输出判断结果。

JAVA 输入年份月份打印该月的日历

编写万年历:输入一个年份,再输入一个月份,把那个月的日历打印出来(1900年1月1日是星期一)

Java 使用Calendar类输出指定年份和月份的日历