日历Java联系

使用Java制作一个日历(Java基础练习)

使用Java基础语言编写日历:

​ 需求:输入年份控制台输出当年对应的日历;

​ 具体步骤见代码:

​ 测试类:

package JavaSE;
/*日历测试类*/
/**
 * 需求:键盘录入任意一个年份,在控制台输出对应的日历
 */
import java.text.ParseException;
import java.util.Scanner;
public class CalendarDemo {
    public static void main(String[] args) throws ParseException {
        Scanner scan=new Scanner(System.in);//创建扫描器
        Calendars rili=new Calendars();//声明功能类
        System.out.print("请输入要查询的年份:");//接收年份
        int year=scan.nextInt();//接收用户输入的数值
        int pos=rili.getDay(year);//根据输入的年份,确定该年份的某一天是星期几
        System.out.println("=============="+year+"年================");
        /*打印月份及星期*/
        for (int month=1;month<=12;month++) {
            rili.PrintWeek(month);//调用打印星期的方法
            /*遍历星期并换行*/
            for(int i=1;i<pos%7;i++){
                System.out.print("\t");
            }
            /*打印天数*/
            for (int day=1;day<=rili.getDays(year,month);day++){
                System.out.print(day+"\t");//打印天数并空开间隔保持和星期对其
                //换行
                if(pos++%7==0){
                    System.out.println();//天数换行
                }
            }
            System.out.println();//月份换行
        }


    }
}

功能类:

package JavaSE;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Calendars {
    /*打印星期*/
    public void PrintWeek(int month){
        System.out.println("=============="+month+"月================");
        String weeks[]={"一\t","二\t","三\t","四\t","五\t","六\t","日\t"};
        //循环遍历输出数组(输出周一到周日)
        for (int i=0;i<= weeks.length-1;i++){
            System.out.print(weeks[i]);
        }

        System.out.println();
    }

    /**
     * 打印日历
     * 根据输入的年份,确定该年份的1月1日时星期几
     */
   public int getDay(int year) throws ParseException {
       //获取日历对象
       Calendar c=Calendar.getInstance();
       //日期格式化对象
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
       Date pos_data=sdf.parse(year+"-01-01");
       c.setTime(pos_data);
       return c.get(Calendar.DAY_OF_WEEK)-1;
    }
    /*判断不同年份月份天数*/
    public int getDays(int year,int month) {
       int days=0;
       switch(month){
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:
           case 12:
               days=31;
               break;
           case 2:
               if(year%4==0&&year%100!=0||year/40==0){
                   days=29;
               }else {
                   days=28;
               }
               break;
           case 4:
           case 6:
           case 9:
           case 11:
               days=30;
               break;
       }
       return days;
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值