首页 > 编程语言 >初学Java基础Day09---不死神兔,方法版本的万年历

初学Java基础Day09---不死神兔,方法版本的万年历

时间:2024-09-29 22:23:07浏览次数:8  
标签:Day09 Java int System 兔子 month --- year 输入

一,不死神兔(方法递归版)

不死神兔也叫做斐波那契数列或者叫做黄金分割数列或者叫做兔子数列:
不死神兔问题:有1对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月有几对兔子

1.找规律当月兔子的对数等于上个月对数加上上个月对数
2.找出口:第一个月和第二个月兔子都是一对

public static void main(String[] args){
    
    int num =getRabbit(8);
    System.out.println(num);
}
public static int getRabbit(int month){
    if(month == 1 || month ==2){
        return 1;
    }else{
        return getRabbit(month-1) + getRabbit(month-2);
    }
}//21

二,打印万年历(方法版本)

需求:输入年和月,打印当月的日历
线索:1900年1月1日是星期一
分析: 1.输入年和月
            2.计算出1990年1月1日到输入年输入月的第一天的总天数
            3,计算当月的第一天是星期几
            4.计算当月的天数
            5.打印日历

import java.util.Scanner;
public class Test01{
        
        public static void main(String[] args){
	
		//1.输入年和月
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年:");
		int year = scan.nextInt();
		System.out.println("请输入月:");
		int month = scan.nextInt();
		
		//2.计算出1900年1月1日到输入年输入月的第一天的总天数
		int allDay = getAllDay(year,month);
		
		//3.计算星期几
		int week = getWeek(allDay);
		
		//4.计算当月的天数
		int day = getDay(year,month);
		
		//5.打印日期
		printCalendar(year,month,day,week);
	}
	
	//打印日历
	public static void printCalendar(int year,int month,int day,int week){
		System.out.println(year + "年" + month + "月");
		System.out.println("一\t二\t三\t四\t五\t六\t日");
		
		int count = 0;//换行的计数器(逢7换行)
		
		//打印空格
		for(int i = 1;i<week;i++){
			System.out.print("\t");
			count++;
		}
		
		//打印日期
		for(int i = 1;i<=day;i++){
			System.out.print(i + "\t");
			count++;
			if(count % 7 == 0){
				System.out.println();//换行
			}
		}
	}
	
	//计算星期
	public static int getWeek(int allDay){
		int week = allDay%7;
		if(week == 0){
			week = 7;
		}
		return week;
	}
	
	//计算出1900年1月1日到输入年输入月的第一天的总天数
	public static int getAllDay(int year,int month){
		int allDay = getAllDayOfYear(year) + getAllDayOfMonth(year,month) + 1;
		return allDay;
	}
	
	//计算1月到输入月的总天数
	public static int getAllDayOfMonth(int year,int month){
		int allDayOfMonth = 0;
		for(int i = 1;i<month;i++){
			allDayOfMonth += getDay(year,i);
		}
		return allDayOfMonth;
	}
	
	//计算1900年到输入年的总天数
	public static int getAllDayOfYear(int year){
		int allDayOfYear = 0;
		for(int i = 1900;i<year;i++){
			if(isLeapYear(i)){
				allDayOfYear += 366;
			}else{
				allDayOfYear += 365;
			}
		}
		return allDayOfYear;
	}
	
	//获取当月的天数
	public static int getDay(int year,int month){
		int day = 0;
		switch(month){
			case 1:case 3:case 5:case 7:case 8:case 10:case 12:
				day = 31;
			break;
			case 4:case 6:case 9:case 11:
				day = 30;
			break;
			case 2:
				if(isLeapYear(year)){
					day = 29;
				}else{
					day = 28;
				}
			break;			
		}
		return day;
	}
	
	//判断是否是闰年的方法
	public static boolean isLeapYear(int year){
		if(year%4==0 && year%100!=0 || year%400==0){
			return true;
		}
		return false;
	}
}

标签:Day09,Java,int,System,兔子,month,---,year,输入
From: https://blog.csdn.net/2401_87491344/article/details/142644902

相关文章

  • Singularity 2 - 400个大气史诗电影预告片/轰隆声/风声/上升/张力/呼啸声/嗡嗡声/暗淡
    SINGULARITY2–CINEMATICSOUNDEFFECTSLIBRARY广受赞誉的电影音效库SINGULARITY的后续更新作品。电影人必须拥有的音效库。Singularity2包括400个原始声音,旨在帮助您创建惊人的电影电影。特性–400个原创音效–专业的掌握–全部为WAV格式(1.2GB)–兼容任......
  • 【Java】—— 常用类和基础API:JDK8之前日期时间API的使用:Date、SimpleDateFormat、Cal
    目录3.JDK8之前:日期时间API3.1java.lang.System类的方法3.2java.util.Date3.3java.text.SimpleDateFormat3.4java.util.Calendar(日历)练习3.JDK8之前:日期时间API3.1java.lang.System类的方法System类提供的publicstaticlongcurrentTimeMillis():用来返......
  • 【10月持续更新】国内ChatGPT-4中文镜像网站整理
       一、国内大模型与ChatGPT的区别国内大模型:主要应用于国内市场,支持本土企业和用户,适用于中文语境下的各类应用,如客服、教育、内容生成等。ChatGPT:更高的智能性,尤其是最新推出的GPTo1-preview模型,专门应用于高难度的作业,智商超高,相当于人类博士的水准。具有更广泛的国际适......
  • 区间预测 | Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测
    目录效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测,ARIMA的核密度估计下置信区间预测。2.含点预测图、置信区间预测图、核密度估计图,区间预测(区间覆盖率PICP、区间平均宽度百分比PINAW),点预测多......
  • 学习docker第二弹------基本命令[帮助启动类命令、镜像命令、容器命令]
    docker目录前言基本命令帮助启动类命令停止docker服务查看docker状态启动docker重启docker开机启动docker查看概要信息查看总体帮助文档查看命令帮助文档镜像命令查看所有的镜像-a查看镜像ID-q在仓库里面查找redis拉取镜像查看容器/镜像/数据卷所占内存删除一个镜像删......
  • Java Deeplearning4j:构建和训练卷积神经网络(CNN)模型
    ......
  • Github_以太网开源项目verilog-ethernet代码阅读与移植(五)
    实验背景在(四)中介绍了Github开源项目verilog-ethernet的移植思路,以及对MII接口和数据链路层等功能的仿真,下面介绍数据的跨时钟域传输,以太网数据传输过程和网络层数据传输相关的移植。实验内容数据的跨时钟域传输处理,以太网数据传输过程和网络层数据传输模块介绍与仿真。......
  • sdram控制器设计(五)- 读操作问题排查
    实验背景在(四)中介绍了sdram读操作的实现和仿真过程,现在介绍读操作实现过程中出现的一些问题。实验内容介绍sdram控制器读模块的实现和仿真验证过程中的问题。实验步骤在(四)中,读操作的波形图如下:写数据正常,从sdram的sdram_dq(与读模块read_dq连接)端口读出的数据也是正确......
  • JavaScript
    什么是JavaScript?JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言(脚本语言是不需要编译,直接通过浏览器的解释就可以运行)。是用来控制网页行为的,它能使网页可交互。JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似。JavaScript在1......
  • 视野修炼-技术周刊第103期 | 优雅的移除事件
    欢迎来到第103期的【视野修炼-技术周刊】,下面是本期的精选内容简介......