- 插。。沒辦成。又得等。
- 累死了。
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; } } } }
數組java
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階乘結果中有多少個零spa
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); } }