关于打印日历的java程序,哪位能帮忙看看哪里错了,帮忙改改?
2,4,6,9,11月这三个月的日历打印都是错的不知道哪里错了程序如下:importjava.util.*;importjava.io.*;publicclassT8_1...
2,4,6,9,11月这三个月的日历打印都是错的不知道哪里错了
程序如下:
import java.util.*;import java.io.*;
public class T8_1_1
{
public static void main(String args[]) throws IOException
{
int year,month;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please choose a year:");
year=Integer.parseInt(br.readLine());
System.out.println("Please choose a month:");
month=Integer.parseInt(br.readLine());
Calendar t;
t=Calendar.getInstance();
t.set(year-1900,month,1);
int starter=t.get(t.DAY_OF_WEEK);
int counter=1,day=31,i;
if(month!=2)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
}
}
else
{
if(year%4==0&&year%100!=0||year%400==0)
day=29;
else day=28;
}
System.out.println("Here is the calender of"+year+"/"+month+"\n\n");
System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
for(i=1;i<starter;i++)
{
System.out.print(" \t");
}
for(i=starter;i<8;i++)
{
System.out.print(counter+" \t");
counter++;
}
System.out.print("\n");
for(i=1;counter<=day;i++,counter++)
{
System.out.print(counter+" \t");
if(i%7==0)System.out.print("\n");
}
System.out.print("\n");
}
} 展开
程序如下:
import java.util.*;import java.io.*;
public class T8_1_1
{
public static void main(String args[]) throws IOException
{
int year,month;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please choose a year:");
year=Integer.parseInt(br.readLine());
System.out.println("Please choose a month:");
month=Integer.parseInt(br.readLine());
Calendar t;
t=Calendar.getInstance();
t.set(year-1900,month,1);
int starter=t.get(t.DAY_OF_WEEK);
int counter=1,day=31,i;
if(month!=2)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
}
}
else
{
if(year%4==0&&year%100!=0||year%400==0)
day=29;
else day=28;
}
System.out.println("Here is the calender of"+year+"/"+month+"\n\n");
System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
for(i=1;i<starter;i++)
{
System.out.print(" \t");
}
for(i=starter;i<8;i++)
{
System.out.print(counter+" \t");
counter++;
}
System.out.print("\n");
for(i=1;counter<=day;i++,counter++)
{
System.out.print(counter+" \t");
if(i%7==0)System.out.print("\n");
}
System.out.print("\n");
}
} 展开
4个回答
展开全部
t.set(year-1900,month,1);
改成
t.set(year, month-1, 1); //year没什么说的,mouth从0开始,1月既是0月
改成
t.set(year, month-1, 1); //year没什么说的,mouth从0开始,1月既是0月
更多追问追答
追问
谢你了,现在好了,但是还是不明白为什么
追答
没有为什么 year就是年,你为什么要减1900。瞬间偏移量的标准也是格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000。月就更没什么好说的了。说了Calendar.MONTH 字段的定义就是这么表示的。0-11对应1-12月
展开全部
鼻涕一米二说得对。
没理解你为什么要减去1900,应该没有必要。
没理解你为什么要减去1900,应该没有必要。
追问
谢谢了,但是我还是不明白为什么要month-1
追答
MONTH是从0开始计数的,0就是1月,11就是12月。例如,你把MONTH设置为12,实际上就成了明年的1月了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
t.set(year,month-1,1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
到现在为止出现的结果是什么呢?报错还是没达到逾期将结果?
追问
没达到预期效果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询