我想要显示当月的日历的,可是一直不是我想要的格式,帮忙看看我的代码呀。谢谢
package cn.xiaoben;import java.util.*;public class CalendarTest { /**
* @param args
*/
public static void main(String[] args) {
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for(int i=Calendar.SUNDAY;i<weekday;i++)
System.out.print(" ");
do{
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if(day==today)
System.out.print("*");
else
System.out.print(" ");
if(weekday==Calendar.SATURDAY);
System.out.println();
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(d.get(Calendar.MONTH)==month);
if(weekday!=Calendar.SUNDAY)
System.out.println();
}}
package cn.xiaoben;import java.util.*;public class CalendarTest { /**
* @param args
*/
public static void main(String[] args) {
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for(int i=Calendar.SUNDAY;i<weekday;i++)
System.out.print(" ");
do{
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if(day==today)
System.out.print("*");
else
System.out.print(" ");
if(weekday==Calendar.SATURDAY);
System.out.println();
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(d.get(Calendar.MONTH)==month);
if(weekday!=Calendar.SUNDAY)
System.out.println();
}}
看看对你有没有帮助,我还没细看,祝好运!import java.util.GregorianCalendar;
import java.util.Date;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Test2 {
private String weekDay = null;
private int dayNum = 0; public static void main(String[] args) {
boolean bYear = true;
boolean bMonth = true;
int year = 0;
int month = 0;
System.out.println( "请输入年份:" );
year = new Test2().readIn( bYear );
System.out.println( "请输入月份:" );
month = new Test2().readIn( bMonth );
System.out.println( year + "--" + month );
new Test2().weeklyOutput( year, month );
}
/**
* 从键盘读入字符串转成int型
*
* @param b
* @return
*/
public int readIn( boolean b ) {
String str = null;
int num = 0;
BufferedReader br = new BufferedReader(
new InputStreamReader( System.in ) );
try {
//当b=true时,把从键盘输入的字符串试图转换为int,输入不为数字则重新输入
while( b ) {
str = br.readLine();
for( int i = 0; i < str.length(); i++ ){
char strChar = str.charAt(i);
if( !( strChar >= 48 && strChar <= 57 ) ){
System.out.println( "非法格式!请输入数字格式:" );
b = true;
break;//**注意用break跳出for循环(不能用return,那就终止了)
}
else{
b = false;
}
}
}
num = Integer.parseInt( str );
} catch (IOException e) {
e.printStackTrace();
}
return num;
}
/**
* 根据2007年5月1日是周2推算星期
*
* @param year
* @param month
* @param day
* @return
*/
public String myWeekday(int year, int month, int day) {
GregorianCalendar timeStart = new GregorianCalendar(2007, 4, 1 );
GregorianCalendar timeEnd = new GregorianCalendar(year, (month - 1), day );
Date sTimeDate = timeStart.getTime();
Date eTimeDate = timeEnd.getTime();
//System.out.println(eTimeDate + "-" + sTimeDate);
long sTimeLong = sTimeDate.getTime();
long eTimeLong = eTimeDate.getTime();
long diffLong = eTimeLong - sTimeLong;
long diffDay = diffLong / 1000 / 60 / 60 / 24;
//System.out.println(diffDay); switch ( (int) diffDay % 7 ) {
case 0:
weekDay = "2";
break;
case 1:
case -6:
weekDay = "3";
break;
case 2:
case -5:
weekDay = "4";
break;
case 3:
case -4:
weekDay = "5";
break;
case 4:
case -3:
weekDay = "6";
break;
case 5:
case -2:
weekDay = "7";
break;
case 6:
case -1:
weekDay = "1";
break;
}
//System.out.println("weekDay is : " + weekDay);
return weekDay;
} /**
* 根据给出的年月份计算天数
*
* @param year
* @param month
* @return
*/
public int myMonthDays( int year, int month ) {
//根据平闰年得到2月份天数
int jan = 28;
if( ( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ) {
jan = 29;
}
//根据月份得到每个月的天数
switch( month ) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return dayNum = 31;
case 4:
case 9:
case 6:
case 11:
return dayNum = 30;
case 2:
return dayNum = jan;
default:
System.out.println( "month must be between 1 and 12." );
return dayNum = -1;
}
} /**
* 打印日历
*
* @param year
* @param month
*/
public void weeklyOutput( int year, int month ) {
int wd = 0;
String dayStr = null;
System.out.println( "Sun Mon Tue Wed Thu Fri Sat" );//**注意:2位空格间隔
//得到星期并根据1号所在的星期打印空格
weekDay = this.myWeekday( year, month, 1 );
wd = Integer.parseInt(weekDay);
if( wd == 7 ){
wd = 0;
}
for ( int i = 0; i < wd; i++ ) {
System.out.print(" "); //**注意:4个空格 (包括2位数字和2位空格)
}
//得到并打印天数, 每行占7位(包含1日前的空格)
dayNum = this.myMonthDays( year, month );
for ( int i = 0; i < dayNum; i++ ) {
dayStr = ( i + 1 ) + " ";
//**注意:为了能使数字对齐,1-9前加0
if( i < 9 ){
dayStr = "0" + (i + 1) + " ";
}
System.out.print( dayStr );
if( ( i + 1 + wd ) % 7 == 0 ) {
System.out.println();
}
}
}
}
//注://测试得到结果:(月份+1)是真正的月份
//public void test() {
// GregorianCalendar m = new GregorianCalendar(2007, 4, 31);// 5月31日
// Date md = m.getTime();
// System.out.println(md);
//}//++++4种方法:
// +readIn(boolean):int 把从键盘输入的字符串试图转换为int,输入不为数字则重新输入
// +myWeekDay(year,month,day):String 根据2007年5月1日是周2推算出星期
// +myMonthDays(year,month):int 由给出的年月份计算天数
// +weeklyOutput(year,month):void 由给出的年月份打印日历
* @param args
*/
public static void main(String[] args) {
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
do {
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if (day == today)
System.out.print("* ");
else
System.out.print(" "); if (weekday == Calendar.SATURDAY)
System.out.println();
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
} while (d.get(Calendar.MONTH) == month); if (weekday != Calendar.SUNDAY)
System.out.println();
}}
格式基本符合要求,但你要调整第一个星期的对应关系
import java.util.GregorianCalendar;
class CalendarTest
{ public static void main(String[] args)
{
GregorianCalendar a=new GregorianCalendar();
int day=a.get(Calendar.DAY_OF_MONTH);
int month=a.get(Calendar.MONTH);
a.set(Calendar.DAY_OF_MONTH,1);
int weekday=a.get(Calendar.DAY_OF_WEEK);
System.out.println("本月的日历:");
System.out.println("日 一 二 三 四 五 六 ");
for(int i=Calendar.SUNDAY;i <weekday;i++)
{
System.out.print(" ");
}
do{
int today=a.get(Calendar.DAY_OF_MONTH);
System.out.printf("%2d",today);
if(day==today)
{
System.out.print("* ");
}
else
{
System.out.print(" ");
}
if(a.get(Calendar.DAY_OF_WEEK)==7)
{
System.out.println();
}
a.add(Calendar.DAY_OF_MONTH,1);
}while(a.get(Calendar.MONTH)==month);
System.out.println();
}
}