您的位置:

java打印一年日历,java打印日历,周一放前面

本文目录一览:

Java日历打印,怎么加输入年份,打印整年12个月打印,输入月份打印季节,下面代码如何优化,给个思路?

建议封装函数,使用数组完成所有的打印

比如获取天数,getDays(int year,int month)

获取星期,getDay(int allDays)

获取极度,getQuater(int month)

然后打印重载写print方法,传入的flag不同打印年 嫉妒等

编写一个JAVA应用程序,要求从键盘输入某年份,然后打印出该年全年的日历。

首先键盘输入的话多种方式实现,提供两种,一是使用main方法的arg参数,也就是在使用java命令的时候后面跟上参数,在main方法里调用arg[0]即可,第二种方法是使用scanner类来得到system.in的内容

然后就是打印全年,这个只要使用Calendar类即可,得到Calendar对象以后通过一个循环365次,不断的day加一即可

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

写了个简明的,

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;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

java万年历打印输出格式问题

运行了下你的这个代码 , 不止2008是错的  其他年份都是错的。

给个例子你:

import java.util.Scanner;

/**

 * java输入年,月得到日历

 * 

 * @author young

 *

 */

public class PrintCalendar {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("Enter full  year (eg:2001):");

int year = input.nextInt();

System.out.print("Enter month in number 1 between 12:");

int month = input.nextInt();

printMonth(year, month);

}

public static void printMonth(int year, int month) {

printMonthTitle(year, month);

printMonthBody(year, month);

}

public static void printMonthTitle(int year, int month) {

System.out.println("        " + getMonthName(month) + " " + year);

System.out.println("______________________________");

System.out.println("  Sun Mon Tue Wed Thu Fri Sat");

}

public static String getMonthName(int month) {

String monthName = " ";

switch (month) {

case 1:

monthName = "Fanuary";

break;

case 2:

monthName = "January";

break;

case 3:

monthName = "March";

break;

case 4:

monthName = "April";

break;

case 5:

monthName = "May";

break;

case 6:

monthName = "June";

break;

case 7:

monthName = "July";

break;

case 8:

monthName = "August";

break;

case 9:

monthName = "September";

break;

case 10:

monthName = "October";

break;

case 11:

monthName = "November";

break;

case 12:

monthName = "December";

}

return monthName;

}

public static void printMonthBody(int year, int month) {

int startDay = getStartDay(year, month);

int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);

int i = 0;

for (i = 0; i  startDay; i++) {

System.out.printf("%4s", " ");

}

for (i = 1; i = numberOfDaysInMonth; i++) {

System.out.printf("%4d", i);

if ((i + startDay) % 7 == 0)

System.out.println();

}

// System.out.println();

}

public static int getStartDay(int year, int month) {

final int START_DAY_FOR_JAN_1_1800 = 3;

int totalNumberOfDays = getTotalNumberOfDays(year, month);

return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7;

}

public static int getTotalNumberOfDays(int year, int month) {

int total = 0;

for (int i = 1800; i  year; i++)

if (isLeapYear(i))

total = total + 366;

else

total = total + 365;

for (int i = 1; i  month; i++)

total = total + getNumberOfDaysInMonth(year, i);

return total;

}

// 每个月天数

public static int getNumberOfDaysInMonth(int year, int month) {

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8

|| month == 10 || month == 12)

return 31;

if (month == 4 || month == 6 || month == 8 || month == 11)

return 30;

if (month == 2)

return isLeapYear(year) ? 29 : 28;

return 0;

}

// 判断闰年

public static boolean isLeapYear(int year) {

return year % 400 == 0 || (year % 4 == 0  year % 100 != 0);

}

}

关于java中输出日历

第一句将用户输入的数字设为日历对象的“年”成员变量,第二句和第三句同样,一个是月份,一个是按照每月第一天开始的日期,第四句用于取得一个默认的日历对象。