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; //根据默认排序结果获取集合中的最大值