用简单JAVA语言编写日历

1、日历需求

键盘录入两个数据
年份和月份
输出当月的日历图
提示:1900年1月1日为星期一

2、日历程序编写思路

1.因为1900年1月1日为星期一,所以我们从1900 1.1开始算
从当天开始到输出的总天数;

2.因为到现在的天数可以大致分为从1900年开始到现在的年
数乘以天数加上到当月的天数;

3.求1900到输入年的总天数;

4.求1月到输入月的天数;

5.应该得到输入月第一天为星期几;

6.得到当月的天数;

7.打印日历的格式;

8.打印日期(日期中打出为对齐的);

9.打印空格(要的到当月第一天与周几对齐);

3、日历代码

import java.util.Scanner;
public class Text02 {
   
    public static void main(String[] args) {
   
        //键盘录入你想要查看的月份
        //1900年的1月为周一以此为起始
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入年份:");
        int year=sc.nextInt();
        System.out.println("请输入月份:");
        int mouth=sc.nextInt();
        //计算从1900年开始到year的天数
        int allDayofyear=0;
        for(int i<
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是Java代码实现: ``` import java.util.Scanner; public class Calendar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入年份:"); int year = scanner.nextInt(); System.out.print("请输入月份:"); int month = scanner.nextInt(); // 计算当月第一天是星期几 int firstDayOfWeek = getFirstDayOfWeek(year, month); // 打印日历页头部 printCalendarHeader(year, month); // 打印日历页主体 printCalendarBody(firstDayOfWeek, getDaysOfMonth(year, month)); } /** * 获取某年某月的天数 */ private static int getDaysOfMonth(int year, int month) { int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && isLeapYear(year)) { return 29; } return monthDays[month - 1]; } /** * 判断某年是否为闰年 */ private static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } /** * 获取某年某月第一天是星期几 */ private static int getFirstDayOfWeek(int year, int month) { int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 计算1900年1月1至当年当月1的天数 int days = 0; for (int i = 1900; i < year; i++) { days += isLeapYear(i) ? 366 : 365; } for (int i = 1; i < month; i++) { days += monthDays[i - 1]; if (i == 2 && isLeapYear(year)) { days++; } } // 计算当月1是星期几 return (days + 1) % 7; } /** * 打印日历页头部 */ private static void printCalendarHeader(int year, int month) { System.out.println(String.format("%d年%d月", year, month)); System.out.println(" 一 二 三 四 五 六"); } /** * 打印日历页主体 */ private static void printCalendarBody(int firstDayOfWeek, int daysOfMonth) { int dayCount = 1; // 打印第一行 for (int i = 0; i < firstDayOfWeek; i++) { System.out.print(" "); } for (int i = firstDayOfWeek; i < 7; i++) { System.out.print(String.format("%2d ", dayCount)); dayCount++; } System.out.println(); // 打印其它行 while (dayCount <= daysOfMonth) { for (int i = 0; i < 7; i++) { if (dayCount <= daysOfMonth) { System.out.print(String.format("%2d ", dayCount)); dayCount++; } else { System.out.print(" "); } } System.out.println(); } } } ``` 使用时,通过键盘输入年份和月份,程序会输出该月的日历页。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值