编写万年历(要求输入年份和月份打印这个月的日历)
public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入一个年份:"); //接收年份 int year=sc.nextInt(); System.out.println("请输入一个月份:"); //接收月份 int month=sc.nextInt(); //累计跨年的天数 int yearTotal=0; //计算跨年的天数(当年的不能算,不然整年的天数都加上了) for(int i=1900;i<year;i++){ //闰年加366 if(i%4==0&&i%100!=0||i%400==0){ yearTotal+=366; } //平年加365 else{ yearTotal+=365; } } //累计跨月总天数 int monthTotal=0; //记录每月的天数 int day=0; //i<=month方便后面计算的当月有多少天,但是计算这个月之前总天数时,不能加上本月,所以后面加总的时候要判断 for(int i=1;i<=month;i++){ switch(i){ case 2:day=year%4==0&&i%100!=0||i%400==0?29:28; break; case 4: case 6: case 9: case 11: day=30; break; default: day=31; //只要不等于当月的天数,则累计加总 if(i<month){ monthTotal+=day; } } } //记录本月1号是否被7整除,余数是多少,就是周几 int week=(yearTotal+monthTotal+1)%7; System.out.println("本月1号是周"+week); //1号是周几,前面对应就有几个\t,循环输入 System.out.println("日\t一\t二\t三\t四\t五\t六"); //打印1号前面的空格 for(int i=1;i<=week;i++){ System.out.print("\t"); } //打印每个月的日期数 for(int i=1;i<=day;i++){ System.out.println(i+"\t"); if(yearTotal+monthTotal+i%7==6){ //如果是周六则换行打印 System.out.println(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!