用java编写一个万年历
这是一个作业,我是初学者。编写过程中,关于闰年判断还好办,可是判断星期几就难了,我在百度知道上找到一个什么蔡勒公式,完成后每年的1.2.10.11.12都能正常显示,其他都有错误。程序如下,有兴趣和能力的大侠给看看
import javax.swing.*;
class work2
{
public static void main(String args[])
{
int y,m;
String year,month;
year=JOptionPane.showInputDialog( "请输入年份:" );
month=JOptionPane.showInputDialog("请输入月份:");
y = Integer.parseInt( year );
m=Integer.parseInt(month);
int mon[]={29,31,28,31,30,31,30,31,31,30,31,30,31};
if (y%100==0&&y%400==0||y%100!=0&&y%4==0)
{
mon[2]=mon[0];
}
int mm=0;
if(m==1||m==2)
{
y=y-1;
mm=m+12;
}
else mm=m;
int yy,c;
int d=1,x=0,ye,w;
c=(int)(y/100.0);
ye=y;
while(ye>=100)
{
ye=ye-100;
x=ye;
}
w=x+(x/4)+(c/4)-2*c+(26*(mm+1)/10)+d-1;
if(w<=0)
{
w=w*(-1);
}
int xq=w%7;
JTextArea outputArea = new JTextArea();
String output=" sun mon tue wed thu fri sta\n"+xq;
for(int tt=(-1)*xq,ttt=0;tt<= mon[m];tt++,ttt++)
{
if(tt<0)
{
output+=" ";
}
if(tt==0){}
if(tt>=1&tt<10)
{
output+=" "+tt;
if(ttt%7==0)
{
output+="\n";
}
}
if(tt>=10)
{
output+=" "+tt;
if(ttt%7==0)
{
output+="\n";
}
}
}
outputArea.setText(output);
JOptionPane.showMessageDialog( null, outputArea,"万年历",JOptionPane.INFORMATION_MESSAGE );
System.exit(0);
}
}