哪位高手可以帮我解决一个关于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日的效果(百度上不能复制图片,我打的这个显示的效果不太好,但意思是就是和我们平时看到的最普通的日历是一样的) 展开
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日的效果(百度上不能复制图片,我打的这个显示的效果不太好,但意思是就是和我们平时看到的最普通的日历是一样的) 展开
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));
}
}
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));
}
}
展开全部
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想实现什么效果?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
又一个不劳而获的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一段打印日历到控制台的代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询