-
今天写了个Java程序 - [身边事]
2008年04月06日
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://hfc.blogbus.com/logs/18448596.html
日历来的,花了我2个小时
import javax.swing.JOptionPane;
public class Calender {
public static void main(String[] args) {
//分别输入年份和1月1日是星期几
String yearString = JOptionPane.showInputDialog("输入年份(1900-2100):");
int year=Integer.parseInt(yearString);
String weekdayString = JOptionPane.showInputDialog("该年1月1日是星期几?\n"+
"输入“1”表示星期一,“2”表示星期二,如此类推(只能输入1-7的整数)");
int weekday=Integer.parseInt(weekdayString);
//weekdayNext变量为提示下一个月的首日的星期
int weekdayNext=1;
//定义日历的题目
String output_00 = "Calender of "+year;
output_00 +="\n____________________________________\n";
//用month数组储存月份及其名字
String[] Months = new String[13] ;
for (int i_m=1;i_m<=12;i_m++)
Months[i_m]=i_m+"月";
//用output数组储存各月份的日历
String[] output = new String[13] ;
//检查闰年
int runyear=1;
if ((year%4==0&&year%100!=0)||year%400==0)
runyear=29;
else
runyear=28;
//分别制作各月份的日历
for(int m=1;m<=12;m++){
switch (m)
{
case 1://输入月的标题
output[m]+=" "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekday变量确定首日的位置
if (weekday>1)
{for (int i_sp=2;i_sp<=weekday;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=31;i++){
if (i<9)
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((31-(8-weekday))%7)+1;
break;
case 2://输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=runyear;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((runyear-(8-weekdayNext))%7)+1;
break;
case 3: case 5: case 7: case 8: case 10: case 12:
//输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=31;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((31-(8-weekdayNext))%7)+1;
break;
case 4: case 6: case 9: case 11:
//输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=30;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((30-(8-weekdayNext))%7)+1;
break;
}
}
//用outputFinal储存日历标题和各月日历
String outputFinal = output_00;
for (int i_f=1;i_f<=12;i_f++)
outputFinal += output[i_f];
//输出日历
JOptionPane.showMessageDialog(null,outputFinal);
}
}随机文章:
21点...by Java 2008年04月27日课程表 2008年03月16日艳照门事件之后续影响 2008年02月20日生活的智慧(教儿必备) 2008年02月18日Windows XP SP2 北京政府版 2008年02月17日
收藏到:Del.icio.us


