JAVA编程学习记录-不死神兔和文件操作练习
发布日期:2021-07-23 18:13:34 浏览次数:2 分类:技术文章

本文共 4279 字,大约阅读时间需要 14 分钟。

Java编程学习-不死神兔和文件操作练习

1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)

(1)数组方式

package DiGui;/** * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, *		假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔) *	分析: *		由于第一个月跟第二个月第一对兔子都不生,所以前两个月兔子对数都为1,{1,1......} *		第三个月:兔子开始生了(命名第二代为兔儿子),有2对,{1,1,2......} *		第四个月:兔儿子的第二个月不生育,老兔子继续生(兔二儿子),有3对,{1,1,2,3......} *		第五个月:兔儿子(1对)的第三个月,开始生了(命名第三代为兔孙子(2对)),兔二儿子(3对)的第二个月不生,老兔子(4对)继续生(兔三儿子(5对)),有5对,{1,1,2,3,5......} *		第六个月:兔孙子(1对)的第二个月不生育,兔二儿子(2对)的第三个月,开始生了(命名为兔二孙子(3对)),兔儿子(4对)和老兔子(5对)继续生(兔三孙子(6对)、兔四儿子(7对)),加上兔三儿子(8对)第六个月有8对,{1,1,2,3,5,8......} *	发现规律: *			从第三个月开始,每个月的兔子总对数为前两个月之和: *					即 3月兔数(2)=1月兔数(1)+2月兔数(1)、4月兔数(3)=3月兔数(2)+2月兔数(1)...  *		 */public class RabbitsNeverDie {	public static void main(String[] args) {		// 定义数组统计每个月的兔子数量,数组长度为20个月		int[] countSum = new int[20];		// 定义循环,给数组赋值,值为每个月兔子的个数		for (int i = 0; i < countSum.length; i++) {			// 前两月兔子对数为1			if (i == 0 || i == 1) {				countSum[i] = 1;			} else {// 从第三个月开始,兔子对数为前两月之和				countSum[i] = countSum[i - 1] + countSum[i - 2];			}		}				// 遍历检验每个月的兔子对数[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765]		System.out.print("[");		for (int i = 0; i < countSum.length; i++) {			if (i == countSum.length - 1) {				System.out.println(countSum[i] + "]");			} else {				System.out.print(countSum[i] + ",");			}		}				// 第20个月兔子对数为数组最后一个数		System.out.println("第20个月兔子对数为:" + countSum[countSum.length - 1]);// 统计20个月的兔子总对数		int sum = 0;		for (int count : countSum) {			sum += count;		}		System.out.println("\n20个月兔子总对数:" + sum);		int arrsum = arrRabbit();		System.out.println("用方法统计20个月兔子总对数:" + arrsum);	}	// 定义方法一步到位	public static int arrRabbit() {		int[] month = new int[20];		int sum = 0;		for (int i = 0; i < month.length; i++) {			if (i == 0 || i == 1) {				month[i] = 1;				sum += month[i];			} else {				month[i] = month[i - 1] + month[i - 2];				sum += month[i];			}		}		return sum;	}}

 

(2)递归方式

 

package DiGui;/** * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, *		假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔) *	分析: *		由于第一个月跟第二个月第一对兔子都不生,所以前两个月兔子对数都为1,{1,1......} *		第三个月:兔子开始生了(命名第二代为兔儿子),有2对,{1,1,2......} *		第四个月:兔儿子的第二个月不生育,老兔子继续生(兔二儿子),有3对,{1,1,2,3......} *		第五个月:兔儿子(1对)的第三个月,开始生了(命名第三代为兔孙子(2对)),兔二儿子(3对)的第二个月不生,老兔子(4对)继续生(兔三儿子(5对)),有5对,{1,1,2,3,5......} *		第六个月:兔孙子(1对)的第二个月不生育,兔二儿子(2对)的第三个月,开始生了(命名为兔二孙子(3对)),兔儿子(4对)和老兔子(5对)继续生(兔三孙子(6对)、兔四儿子(7对)),加上兔三儿子(8对)第六个月有8对,{1,1,2,3,5,8......} *	发现规律: *			从第三个月开始,每个月的兔子总对数为前两个月之和: *					即 3月兔数(2)=1月兔数(1)+2月兔数(1)、4月兔数(3)=3月兔数(2)+2月兔数(1)...  *		 */import java.util.Scanner;public class RabbitDiGui {	public static void main(String[] args) {		//改进,输入月份,输出兔子总数		//创建键盘录入对象		Scanner sc = new Scanner(System.in);		System.out.println("请输入月数");		int month = sc.nextInt();		int sum = dgRabbit(month);				System.out.println("第"+month+"个月兔子对数为:"+sum);			}	// 定义递归方法	public static int dgRabbit(int month) {		if(month == 1 || month == 2	) {			return 1;		}else {			return dgRabbit(month-1)+dgRabbit(month-2);		}	}}

 

2.需求:递归删除带内容的目录,假设项目路径下有一个demo文件夹里面里面又有一些文件夹和一些文件,请使用递归思路进行实现

package fileDemo;/**需求:递归删除带内容的目录 *	假设项目路径下有一个demo文件夹里面里面又有一些文件夹和一些文件,请使用递归思路进行实现 *  */import java.io.File;public class FileDemo {	public static void main(String[] args) {		// 用循环创建100个文件夹		for (int i = 0; i < 100; i++) {			// 封装File对象,i为文件夹名			File file = new File("demo\\" + i);			// 建立文件夹			file.mkdir();		}		// 封装File对象		File demo = new File("demo");		// 调用递归删除方法		deleteFile(demo);	}	// 方法递归删除	public static void deleteFile(File demo) {		// 获取该文件夹下的文件或文件夹路径名数组		File[] demoFile = demo.listFiles();		// 非空判断		if (demoFile != null) {			// 遍历demofile数组对象			for (File file : demoFile) {				// 判断file里面的对象是不是标准文件,如果是则递归调用该方法进行继续判断				if (file.isFile()) {					deleteFile(file);				} else {// 否则是一个文件夹,执行输出文件名,并删除					System.out.println(file.getName() + "---" + file.delete());				}			}		}	}}

3.需求:请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台

package fileDemo;/** * 需求:请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台 */import java.io.File;public class FileTest {	public static void main(String[] args) {		// 创建E盘目录JavaSE对象		File file = new File("E:\\JavaSE");		// 获取file对象内的文件或文件夹路径名数组		File[] files = file.listFiles();		// 遍历判断每个文件名		for (File f : files) {			// 获取f对象文件名,判断是否以".java"结尾,如果是输出f对象路径名			if (f.getName().endsWith(".java"))				System.out.println(f);		}	}}

 

 

 

 

 

转载地址:https://blog.csdn.net/otmqixi/article/details/80343055 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JAVA编程学习记录-流对象的练习
下一篇:JAVA编程学习记录-集合练习

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年02月28日 14时33分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章