标题:快致郁了,求大佬帮忙
只看楼主
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
结帖率:80%
 问题点数:0 回复次数:2 
快致郁了,求大佬帮忙
package com.wang.practice;

import
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/*
 * 键盘录入一个文件夹路径,
 * 1) 统计该文件夹下的各种后缀名的文件的个数
 * 例如:.txt有10个,.java有30个......
*/
public class Demo15 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个文件路径:");
        String s=sc.next();
        File file=new File(s);
        String fileName="";
        String suffix="";
        int num=0;
        List<String> list=new ArrayList<String>();
        File[] files=file.listFiles();
        for(File ff:files){
            if(ff.isFile()){
                fileName=ff.getName();
                suffix=fileName.substring(fileName.lastIndexOf("."),fileName.length());
                for(int i=0;i<files.length;){
                        list.add(suffix);
                        break;
                }
            }
        }
        int [] sum=new int[list.size()];
        String[] str=new String[list.size()];
        for(int i=0;i<list.size();i++){   
            for(int j=0;j<list.size();j++){
                if(!(list.get(i).equals(list.get(j)))){
                    str[i]=list.get(i);   
                }
                if(list.get(i).equals(list.get(j))){
                    sum[i]++;
                }
            }
        }
    //    System.out.println(Arrays.toString(str));
    //    System.out.println(Arrays.toString(sum));
        for(int i=0;i<str.length;i++){        
            //System.out.println(str[i]+"      aa"+i);
            for(int j=0;j<str.length;j++){
            //    System.out.println(str[j]+"     bb"+j);
                if(!(str[i]==str[j])){
                    continue;
                }
                System.out.println(str[i]+"出现了"+sum[i]+"次");        
            }
        }
    }
}

这是结果


输出的是我的E盘下aa文件夹的内容


想要实现的效果是只输出一行最终结果,比如  .jpg出现了2次,.txt出现了3次

求大佬帮助
搜索更多相关主题的帖子: File List str String int 
2019-08-02 17:18
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
得分:0 
已经解决,谢谢各位,浪费时间看我的问题
2019-08-02 20:38
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
程序代码:
import import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import javax.swing.JFileChooser;

/*

 * 键盘录入一个文件夹路径,

 * 1) 统计该文件夹下的各种后缀名的文件的个数

 * 例如:.txt有10个,.java有30个...... 

 */
public class Demo15 {    
    public static void main(String[] args) {
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = chooser.showOpenDialog(null);
        if (result == JFileChooser.APPROVE_OPTION) {
            File dir = chooser.getSelectedFile();
            List<String> files = display(dir);
            Map<String, Integer> map = files.stream().collect(Collectors.toMap(ele->ele, ele->1,
                    (oldV,newV)->oldV+1));
            for(String name : map.keySet()) {
                System.out.printf("%s有%d个\n", name, map.get(name));
            }
        }
    }

    private static List<String> display(File file) {
        List<String> fileNames = new ArrayList<>();
        if(file.isDirectory() && file.listFiles() != null) {
            List<File> subFiles = Arrays.asList(file.listFiles());
            subFiles.forEach(ele->fileNames.addAll(display(ele)));
        } else if(file.isFile()) {
            String name = file.getName();
            if(name.contains(".")) {
                fileNames.add(name.substring(name.lastIndexOf(".")));
            }
        }
        return fileNames;
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2019-08-04 04:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496201-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.289564 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved