基于命令行的万年历要求开发Java Application

基于命令行的万年历,要求开发一个JavaApplication,允许用户通过命令行输入需要查询的年,月,在控制台中格式化输出该月份的日历,日历格式参考Windows系统托... 基于命令行的万年历,要求开发一个Java Application ,允许用户通过命令行输入需要查询的年,月,在控制台中格式化输出该月份的日历,日历格式参考Windows系统托盘的日期和时间程序 展开
 我来答
旗逸雅r7
2015-01-05 · TA获得超过195个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:110万
展开全部
import java.util.Calendar;
import java.util.Scanner;
public class TestArithmetic {
    public static void printDate() {
        String[] weeks={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        System.out.println("请输入年月 ,已空格作为分隔");
        @SuppressWarnings("resource")
        Scanner scanner=new Scanner(System.in);
        int year=scanner.nextInt();
        int month=scanner.nextInt();
        month=month-1;
        Calendar calendar=Calendar.getInstance();
        Calendar calendar2=Calendar.getInstance();
        for(int i=0;i<7;i++){
            System.out.printf("%-14s",weeks[i]);
        }
        System.out.println();
        for(int i=1;;i++){
            calendar.set(year, month, i);
            calendar2.set(year,month,i+1);
            int weekMum=calendar.get(Calendar.DAY_OF_WEEK);
            if(i==1){
                for(int k=1;k<weekMum;k++){
                    System.out.printf("%-10s","");
                }
            }                
            System.out.printf("%-10s",calendar.get(Calendar.DATE));
            if(calendar.get(Calendar.DATE)>calendar2.get(Calendar.DATE)){
                break;
            }
            if(weekMum==7){
                System.out.println("\n");
            }
        }                
    }
    public static void main(String[] args) {
        while (true) {
            printDate();
            System.out.println("\n"+"-------------------------------------------------");
        }
    }
}
更多追问追答
追问
亲,还能帮我下么
在万年历中增加事件提醒功能,输出日历时在有事件的日期后添加*号。用户若输入日期号则可以查看当日的事件信息,包括日期,时间,事件描述,并给出数字标记,用户输入q退出程序,输入b返回上级菜单
百度网友1c29cc0
2015-01-05 · 超过14用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:16.7万
展开全部
import java.util.Scanner;
import java.util.Date;

public class Test {
public static void main(String args[]){
//键盘接收年月,并且判断输入的是否是闰年
Scanner sc=new Scanner(System.in);
System.out.print("请输入年份:");
int year=sc.nextInt();
System.out.print("请输入月份:");
int month=sc.nextInt();

boolean isRun=false;

//判断年份是否是闰年
if(year%4==0&&year%100!=0||year%400==0)
{
isRun=true;
}

//计算输入年和月对应的总天数
int days=0;//存放当月的总天数
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
days=isRun ? 29:28;
break;
default:
System.out.println("输入的月份无效:");

}
int sum1=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0)
sum1+=366;
else
sum1+=365;
}

//输入年份的第一天距离输入月份之前的天数
int sum2=0;
for(int i = 1;i<month;i++)
{
int dd=0;
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dd=31;
break;
case 4:
case 6:
case 9:
case 11:
dd=30;
break;
case 2:
dd=isRun?29:28;
break;
}
sum2 +=dd;
}

//计算总天数
int sumDays= sum1+sum2;

//计算输入月份的第一天是星期几
int weekday=sumDays%7+1;
if(weekday==7)
{
weekday=0;
}
//按照输入的月份输出日历
//打印标题
System.out.println("星期日\t星期一\t星期二\t星期三" +
"\t星期四\t星期五\t星期六");
for(int i=1;i<=weekday;i++)
{
System.out.print("\t");
}
//循环输出日期
Date date = new Date();
int mm = date.getMonth()+1;
int dd = date.getDate();

for(int i=1;i<=days;i++)
{
if(month==mm && dd==i){
System.out.print("["+i+"]"+"\t");
}
else{
System.out.print(i+"\t");
}
if((i+weekday)%7==0)
{
System.out.print("\n");
}
}
}
}
追问
我要的是基于命令行的代码,这个是么?
追答
是的,你可以运行一下试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式