哪位高手可以帮我解决一个关于java日历的问题?20分!! 20

谁可以帮我改正一下这里的错误,最好是在源代码中改正后,再发回来,谢谢importjava.util.*;publicclassCalendarTest_CN{public... 谁可以帮我改正一下这里的错误,最好是在源代码中改正后,再发回来,谢谢

import java.util.*;

public class CalendarTest_CN
{
public static void main(String[] args)
{
// construct d as current date
GregorianCalendar d = new GregorianCalendar();

int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
// set d to start date of the month
d.get(Calendar.DAY_OF_MONTH, 1);

int weekday = d.get(Calendar.DAY_OF_WEEK);

// print heading
System.out.println("星期一 星期二 星期三 星期四 星期五 星期六 星期日");

// indent first line of calendar
for (int i = Calendar.MONDAY; i < weekday; i++ )
System.out.print(" ");
}
}
do
{
// print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%6d", day);

// mark current day with *
if (day == today)
System.out.print("* ");
else
System.out.print(" ");
}
请注意,请尽量在我的源代码的基础上做修改,最好不是另外写出一个和我的不大一样的源代码,谢谢
我想实现和我们平时看到的日历相同的效果,就像这样
星期日 星期一 星期二 星期三 星期四 星期五 星期六
1 2 3
4 5 6 7 8 9 10

以此类推,直到31日的效果(百度上不能复制图片,我打的这个显示的效果不太好,但意思是就是和我们平时看到的最普通的日历是一样的)
展开
 我来答
之狼是小天使丶
2008-11-07 · TA获得超过208个赞
知道答主
回答量:95
采纳率:0%
帮助的人:63.5万
展开全部
这个我以前做过,把代码给你

import java.util.*;

//输出阳历日历
public class CalendarPage {
//申请一个数组,装载月份
String[] months = { "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December " };

//定义每个月的天数,设置为一个静态不可变的整数数组
public final static int dom[] = {

31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31

};

//编写一个打印程序

//确定日期在日历中的位置
public void print(int mm, int yy) {
// 在这个月的开始的星期栏上,打印相应的空格数
int leadGap = 0;

//打印出当前月份所对应的单词,将其看成是日历的月份
System.out.print(months[mm]);

System.out.print(" ");

//打印出当前的年份,看成是本日历的年份
System.out.print(yy);
//换行
System.out.println();

if (mm < 0 || mm > 11)
//当月份的下标超出界限的时候。抛出异常
throw new IllegalArgumentException("Month " + mm
+ " bad ,must be 0-11");
//实例化一个对象。Gregorian 对象
GregorianCalendar calendar = new GregorianCalendar(yy, mm, 1);
//打印出一周的星期
System.out.println("SU Mo Te We Th Fr Sa");
//计算第一天之前的空格数,比如第一天如果是星期一 ,leadGap 将返回0
leadGap = calendar.get(Calendar.DAY_OF_WEEK) - 1;

int daysInMonth = dom[mm];
if (calendar.isLeapYear(calendar.get(Calendar.YEAR)) && mm == 1)
++daysInMonth;
//打印空格数
for (int i = 0; i < leadGap; i++)
System.out.print(" ");

//填入这个月的天数
for (int i = 1; i <= daysInMonth; i++) {

if (i <= 9)

System.out.print(" ");
System.out.print(i);

//如果这一行结束,就另起一行
if ((leadGap + i) % 7 == 0)
System.out.println();
else
System.out.print(" ");

}
System.out.println();
}

public static void main(String[] av) {

//int month,year;
CalendarPage cp = new CalendarPage();
/*
* if(av.length ==2)
* cp.print(Integer.parseInt(av[0])-1,Integer.parseInt(av[1]));
*
*
* else {
*/

Calendar c = Calendar.getInstance();
cp.print(c.get(Calendar.MONTH), c.get(Calendar.YEAR));

}
}
11925682
2008-11-07
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
package Date;

import java.lang.String;

public class Mydate {

//S1 计算y年第一天的星期
//S11 计算二年间相距的天数
/**
*
*/
public static int getDaysBetween(int y1,int y2){
if(y1>y2){
int t=y1;
y1=y2;
y2=t;
}
int sum=0;
for(int i=y1;i<y2;i++){
sum+=getDays(i);
}
return sum;
}
public static int getDays(int y){
return isLeap(y)?366:365;
}
public static boolean isLeap(int y){
return y%4==0 && y%100!=0 || y%400==0;
}

//S12 计算y年的星期
public static int getWeekDay(int y){
int sum=getDaysBetween(y,2000);
if(y>=2000){
return (sum%7+6)%7;
}
else{
return(7-sum%7+6)%7;
}
}

//S2 计算y年m月星期
public static int getWeekDay(int y,int m){
//计算sum
int sum=0;
for(int i=1;i<m;i++){
sum+=getDays(y,i);
}
//返回
return (getWeekDay(y)+sum%7)%7;
}
public static int getDays(int y,int m){
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11: return 30;
case 2: return isLeap(y)?29:28;
default: return 0;
}
}

public static void print(int y){
for(int i=1;i<=12;i++){
print(y,i);
}
}
public static void print(int y,int m){
System.out.print("\n********** "+y+"年"+m+"月 ************\n");
//计算1日星期
int w=getWeekDay(y,m);
//定位1日
for(int i=0;i<w;i++){
System.out.print(" ");
}
//输出各日
int n=getDays(y,m);
for(int i=1;i<=n;i++){
//输出
System.out.print((i<10?" ":" ")+i);
//换行控制
w++;
w%=7;
if(w==0){
System.out.println();
}
}
}
public int newAttribute;
static public void main(String[] s) {
print (2008);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzj203355
2008-11-07 · TA获得超过2022个赞
知道小有建树答主
回答量:3147
采纳率:100%
帮助的人:1016万
展开全部
你想实现什么效果?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一毛钱视频
2008-11-07 · TA获得超过418个赞
知道小有建树答主
回答量:374
采纳率:100%
帮助的人:94.4万
展开全部
又一个不劳而获的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好大木头
2008-11-08 · TA获得超过1434个赞
知道大有可为答主
回答量:1705
采纳率:0%
帮助的人:1930万
展开全部
一段打印日历到控制台的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式