taoxiuyi0 2019-06-21
- 插。。没办成。又得等。
- 累死了。
package com.test.demo001; import java.io.File; import java.util.Scanner; /** * @author wangtao * 1. 获取所有文件和文件夹,返回File数组。 * 2. 遍历该数组。 * 3. 无论是文件还是文件夹都直接打印。 * 4. 如果是文件夹,递归调用。 */ public class Demo013 { public static void main(String[] args) { File dir = getDir(); printLev(dir,0); } public static void printLev(File dir,int lev) { File[] subFiles = dir.listFiles(); for (File subFile : subFiles) { for(int i = 0;i <= lev;i++){ System.out.print("\t"); } System.out.println(subFile); if(subFile.isDirectory()){ printLev(subFile,lev + 1); //此处不能使用lev++和++lev,他们都会改变lev的值 } } } public static File getDir(){ //1. 创建键盘录入对象 Scanner sc = new Scanner(System.in); //2. 定义一个无限循环 while(true){ System.out.println("请输入文件夹路径:"); String line = sc.nextLine(); //3. 将键盘录入的结果存储在字符串中,并封装成File对象 File file = new File(line); //4. 对File对象做判断 if(!file.exists()){ System.out.println("该文件夹不存在,请重新输入"); }else if(file.isFile()){ System.out.println("您输入的是文件路径,请输入文件夹路径"); }else{ //5. 将文件夹路径对象返回 return file; } } } }
数组
package com.test.demo001; public class Demo014 { public static void main(String[] args) { //数组形式 int[] arr = new int[8]; arr[0] = 1; arr[1] = 1; for(int i = 2;i < arr.length;i++){ arr[i] = arr[i - 2] + arr[i - 1]; } System.out.println(arr[arr.length-1]); } }
递归
package com.test.demo001; public class Demo014 { public static void main(String[] args) { System.out.println(get(8)); } public static int get(int num){ if(num == 1 || num == 2){ return 1; }else{ return get(num - 2) + get(num -1); } } }
以下方式求阶乘超表数范围
package com.test.demo001; public class Demo014 { public static void main(String[] args) { int result = 1; for(int i = 1;i <= 1000;i++){ result = result * i; } System.out.println(result);//超出int类型的表数范围了 } }
求1000阶乘结果中有多少个零
package com.test.demo001; import java.math.BigInteger; public class Demo014 { public static void main(String[] args) { BigInteger bi1 = new BigInteger("1"); for(int i = 1;i <= 1000;i++){ BigInteger bi2 = new BigInteger(i + ""); bi1 = bi1.multiply(bi2); } System.out.println(bi1); int count = 0; String str = bi1.toString(); for(int i = 0;i < str.length();i++){ if('0' == str.charAt(i)){ count++; } } System.out.println(count); } }
求1000阶乘结果尾部有多少个零
package com.test.demo001; import java.math.BigInteger; public class Demo014 { public static void main(String[] args) { BigInteger bi1 = new BigInteger("1"); for(int i = 1;i <= 1000;i++){ BigInteger bi2 = new BigInteger(i + ""); bi1 = bi1.multiply(bi2); } System.out.println(bi1); int count = 0; String str = bi1.toString(); for(int i = str.length()-1; i >= 0; i--){ if('0'==str.charAt(i)){ count++; } else { break; } } System.out.println(count); } }
5*5*5
的倍数至少是三个零5*5*5*5
的倍数至少是四个零package com.test.demo001; import java.util.ArrayList; public class Demo014 { public static void main(String[] args) { } public static int getLucklyNum(int num){ ArrayList<Integer> list = new ArrayList<>(); for(int i = 1;i <= num;i++){ list.add(i); } int count = 1; for(int i = 0; list.size()!= 1; i++) { if(i == list.size()){ i = 0; } if(count % 3 ==0){ list.remove(i--); //这个i--要注意! } count++; } return list.get(0); } }
叨逼叨两句收拾收拾~18-11:Collection中的常见方法sortpackage com.test.demo001;System.out.println; //根据默认排序结果获取集合中的最大值