学习JavaEE的日子 day08 方法的重载,递归,万年历

2024-01-04 09:36

本文主要是介绍学习JavaEE的日子 day08 方法的重载,递归,万年历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

day08

1.方法的重载

	>理解:方法与方法之间的关系>		条件:>			1.方法必须在同一个类中>			2.方法名必须一致>			3.参数列表的个数或者类型不一致>			4.与返回值无关>		好处:系统会根据具体实参类型自动匹配到对应的方法中>		应用场景:一个类的多个方法的功能一致,细节实现不一样,就可以考虑使用重载	
	/**定义一个方法的步骤:1.考虑方法名 -- 见名知意2.参数(参数有几个?名字怎么取?参数是什么类型)3.返回值(返回值是什么类型)需求:创建一个方法,传入两个int值,返回最大值 -- getMax创建一个方法,传入三个int值,返回最大值  -- getMax创建一个方法,传入两个double值,返回最大值 -- getMax创建一个方法,传入三个double值,返回最大值 -- getMax*/
public static void main(String[] args){System.out.println(getMax(10,20,30));
}public static int getMax(int a,int b){return (a>b)?a:b;
}public static int getMax(int a,int b,int c){int max = getMax(a,b);max = getMax(max,c);return max;
}public static double getMax(double a,double b){return (a>b)?a:b;
}public static double getMax(double a,double b,double c){double max = getMax(a,b);max = getMax(max,c);return max;
}

2.方法的递归

>概念:方法调用方法自身
	//错误示范://StackOverflowError - 栈内存溢出//前言:方法里声明的变量叫做局部变量,其作用域就在该方法的内部//错误出现的原因:调用方法就会在栈内存开辟空间,用于存放该方法的局部变量,//				  死循环的调用方法,很快栈内存就被装满并溢出了method();
}public static void method(){method();
}

经验:
1.找规律
2.找出口

/**
需求:设计一个方法,传入int类型的数字n,计算n的阶乘分析:5! = 1*2*3*4*5; -> 5! = 4! * 54! = 1*2*3*4	-> 4! = 3! * 43! = 1*2*3		-> 3! = 2! * 32! = 1*2		-> 2! = 1! * 21! = 1			-> 1! = 1找规律:n! = (n-1)! * n;找出口:1! = 1
*/
public static void main(String[] args){int num = getFactorial(5);System.out.println(num);
}public static int getFactorial(int n){if(n == 1){return 1;}else{return getFactorial(n-1)*n;}
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

面试题:

/**
需求:不死神兔有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?分析:找规律:当月兔子的对数等于上个月+上上个月找出口:第一个月和第二个月兔子都是一对
*/
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);}
}

3.方法版本的万年历

​ 需求:输入年和月,打印当月的日历
​ 线索:1900年1月1日是星期一
​ 分析:
​ 1.输入年和月
​ 2.计算出1900年1月1日到输入年输入月的第一天的总天数
​ 2.1 计算1900年(包含)到输入年(排他)的总天数
​ 2.2 计算1月到输入月(排他)的总天数
​ 2.3 合并总天数
​ 3.计算出当月的第一天是星期几
​ 4.计算当月的天数
​ 5.打印日历

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;
}}

这篇关于学习JavaEE的日子 day08 方法的重载,递归,万年历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568899

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo