本文目录一览:
- 1、Java日历打印,怎么加输入年份,打印整年12个月打印,输入月份打印季节,下面代码如何优化,给个思路?
- 2、编写一个JAVA应用程序,要求从键盘输入某年份,然后打印出该年全年的日历。
- 3、Java编写程序,输入年份,输出本年度各月份日历
- 4、java万年历打印输出格式问题
- 5、关于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中输出日历
第一句将用户输入的数字设为日历对象的“年”成员变量,第二句和第三句同样,一个是月份,一个是按照每月第一天开始的日期,第四句用于取得一个默认的日历对象。