day16--homework

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

public class Demo1 {
	/*
	 * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
		假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)------------------数组完成
	 */
	public static void main(String[] args) {
		
		int arr[] = new int[100];//定义数组
		int m=20;
		
		arr[1] = 1;//前两个月兔子数量为1只
		arr[2] = 1;
		arr[3] = 2;
		
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		
		for(int i=1;i<=m;i++){
		if(i>=3){    //规律为:1+1+2+3+5+8+...斐波那契数列规律
		arr[i] = arr[i-1] +arr[i-2];
		
		   }
		System.out.println("第"+i+"个月的兔子数量为"+arr[i]);
		  }	
	}
}
2)递归方式
package day0516homerwork;

public class Demo2 {
	/*
	 * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
		假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)-----------------递归完成
	 */
		public static void main(String[] args){
		
	    int sum=Rabbits(20);
	    
		System.out.println("第20个月兔子总数为"+sum);
		}
		private static int Rabbits(int n){
		if(n==1 || n==2)//第一、二个月兔子数量均为1只
			
		   return 1;
		else {
		   return Rabbits(n-1)+Rabbits(n-2);//递归调用Rabbits()方法      规律为:1+1+2+3+5+8+...斐波那契数列规律
		  }
	  }
  }
2.需求:递归删除带内容的目录
 假设项目路径下有一个demo文件夹里面里面又有一些文件夹和一些文件,请使用递归思路进行实现
 
  
package day0516homerwork; import java.io.File; //递归删除带内容的目录 public class Demo4 { public static void main(String[] args) { // 封装目录 File srcFolder = new File("demo"); // 递归实现 DeleteFolder(srcFolder); } /* * 方法: * 返回值类型:void * 参数列表:File srcFolder * 出口条件: * 如果是文件夹就删除 * 规律: * 从文件开始删除,一直到文件夹 */ private static void DeleteFolder(File srcFolder) { // 获取该目录下的文件或者文件夹的File数组 File[] fileArray = srcFolder.listFiles(); if (fileArray != null) {// 避开系统保护文件或者文件夹,其它都删除 // 遍历该File数组,得到每个File对象 for (File file : fileArray) { // 判断该File对象是否是文件夹 if (file.isDirectory()) { DeleteFolder(file); } else { System.out.println(file.getName() + "---" + file.delete()); } } System.out .println(srcFolder.getName() + "---" + srcFolder.delete()); } }

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

import java.io.File;
import java.io.FilenameFilter;

//请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台
public class Demo3 {
	
public static void main(String[] args) {
	File file=new File("E:\\javaSE");
	//第一种方式:File数组
	/*File [] filearray=file.listFiles();
	
	if(filearray!=null) {//非空判断
		
	for(File f:filearray) {
		//遍历首先判断它是否是个文件,然后判断它以.java为尾的
		if(f.isFile()) {
			if(f.getName().endsWith(".java")) {
				
				System.out.println(f.getName());
			}
		}
	}
 }*/
	
	//第二种方法:File的高级功能---过滤器
	String [] strarray=file.list(new FilenameFilter()
	{
		public boolean accept(File dir, String name) {
			
			File file = new File(dir, name) ;
			//判断是否文件
			boolean flag = file.isFile() ;
			boolean flag2 = name.endsWith(".java") ;
			
			return flag && flag2 ;
			//一步到位
			//return new File(dir, name).isFile() && name.endsWith(".jpg") ;
		}
	}) ;
	
	//遍历字符串数组
	for(String s: strarray) {
		System.out.println(s);
	}
}
}

猜你喜欢

转载自blog.csdn.net/liuxiaofan_/article/details/80337732