做一个java日历,只输入年份,然后输入这一年一月一号是星期几,就可以直接输出这一年的日历,求解

2025-03-06 02:03:39
推荐回答(2个)
回答1:

import java.io.*;

public class Leap
{
static void put(String s)
{
System.out.println(s);
}
static int getWeekNum(int y,int m, int d)
{
int w;
if(m==1||m==2)
{
y--;
m=m+12;
}

w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;

return w;

}
static int getNum(int y,int m,int d)
{
int []list={31,0,31,30,31,30,31,31,30,31,30,31};
int sum=0;
for(int i=0;i!=m-1;i++)
sum+=list[i];
if(m>=3)
sum+=(((y%100==0)||(y%100!=0&&y%4==0))?29:28);
sum+=d;
return sum;
}
static int getMonthDay(int y,int m)
{
switch(m)
{
case 2:
if((y%100==0)||(y%100!=0&&y%4==0))
return 29;
else
return 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
public static void main(String []args)
{

BufferedReader rd=new BufferedReader(new InputStreamReader(System.in),1);
int y,m,d,i,j;
int[][] list=new int[6][7];
for(i=0;i!=6;i++)
{
for(j=0;j!=7;j++)
list[i][j]=0;
}
put("please enter a date:[YYYY MM DD]");
try{
y=Integer.parseInt(rd.readLine());
m=Integer.parseInt(rd.readLine());
d=Integer.parseInt(rd.readLine());
put("当年第"+getNum(y,m,d)+"日.");
put("日 一 二 三 四 五 六");

j=getWeekNum(y,m,d);
int md=getMonthDay(y,m);
for(i=j;i!=md+j;i++)
list[i/7][i%7]=i-j+1;

for(i=0;i!=6;i++)
{
for(j=0;j!=7;j++)
if(list[i][j]!=0)
System.out.printf("%-3d",list[i][j]);
else
System.out.print(" ");
put("");
}
}catch(IOException ex){}
}
}

回答2:

网上很多例子的