编写一个程序,程序提供两种功能:
- 根据用户输入的年份输出该年日历。
- 根据用户输入的日期,输出该天星期。
程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
import java.util.Calendar;
import java.util.Scanner;
public class Test{
Calendar cal=Calendar.getInstance();//调用Calendar
static Scanner scan=new Scanner(System.in);//获得输入
private void func1() { //实现功能1,打印指定年份的全年日历
System.out.println("输入查询的年份:");
int year=scan.nextInt(); //输入查询到年份
int month=0;
int day=0;
for(month=0;month<12;month++) {
System.out.println("\t"+"\t"+"\t"+(month+1)+"月");//每个月标题
System.out.println("Sun\tMON\tTue\tWed\tTur\tFri\tSat\t");//从星期天开始,星期六结束
cal.set(year,month,1);
int n=cal.get(Calendar.DAY_OF_WEEK)-1;//通过返回每个月第一天是星期几来获得每个月一号之前有几个空格
for(int i=0;i<n;i++) {
System.out.print("\t"); //每个月一号之前全为空格输出
}
cal.set(year,month+1,0);
int iday=cal.get(Calendar.DAY_OF_MONTH );//设定日期,来返回前一个月一共有多少天,可免除闰年的判断
for(day=1;day<iday+1;day++) {
cal.set(year,month,day);
System.out.print(cal.get(Calendar.DAY_OF_MONTH)+"\t");//按照日期进行输出
if(cal.get(Calendar.DAY_OF_WEEK )%7==0) {
System.out.print("\n"); //每行到了星期六之后进行换行
}
}
System.out.println("\n"); //每个月完了之后进行换行
System.out.println("=====================================================");//分界符号,使画面更简洁,易观察
}
}
private void func2() { //实现功能2,查询指定日期的星期
System.out.println("输入要查询日期的年份");
int year=scan.nextInt();
System.out.println("输入查询要日期的月份");
int month=scan.nextInt();
System.out.println("输入要查询日期的日期");
int day=scan.nextInt();
cal.set(year,month-1,day);
int n=cal.get(Calendar.DAY_OF_WEEK)-1;//Calendar类的方法,直接输出查询日期的星期
if(n==0) {
System.out.println("该天为星期天");
}
else {
System.out.println("该天为星期"+n);
}
}
private void finish() {
System.out.println("欢迎下次使用!");//退出程序
}
public static void main(String[] args) {
Test a=new Test();
while(true) {
System.out.println("欢迎使用该日历小程序,请按照提示进行功能选择");
System.out.println("输入数字“1”,即可打印输入年份的全年日历;输入数字“2”,即可查询指定日期为星期几;输入数字“3”,即可退出该程序");
int n=scan.nextInt();
if(n==1) {
a.func1();
}
else if(n==2) {
a.func2();
}
else if(n==3) {
a.finish();
break;
}
else {
System.out.println("请按照提示进行输入");
}
System.out.println("============================================");
}
}
}