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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年02月28日 14时33分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!