java读取文件中的内容并进行排序。求大神支招 ~急!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取文件中的内容并进行排序。求大神支招 ~急!!相关的知识,希望对你有一定的参考价值。

public class SortFile 
    
    public static void main(String[] args) 
        new SortFile().doWork();
    
    
    private static final String FILE = "data.txt"; // !!!modify
    
    class Course implements Comparable<Course> 
        String name;
        String teacher;
        int period;
        int price;
        
        Course(String name, String teacher, int period, int price) 
            this.name = name;
            this.teacher = teacher;
            this.period = period;
            this.price = price;
        

        @Override
        public int compareTo(Course target) 
            if (price == target.price) 
                return target.period - period;
            
            return target.price - price;
        
        
        @Override
        public String toString() 
            return "[NAME: " + name + " , TEACHER: " + teacher + " , PERIOD: " + period + " , PRICE: " + price + "]";
        
    
    
    private void doWork() 
        List<Course> courses = new ArrayList<Course>();
        readFile(courses);
        Collections.sort(courses);
        int max = courses.size() >= 3 ? 3 : courses.size();
        for (int i = 0; i < max; i++) 
            System.out.println(courses.get(i).toString());
        
    
    
    private void readFile(List<Course> courses) 
        try 
            BufferedReader br = new BufferedReader(new FileReader(FILE));
            String line = null;
            while ((line = br.readLine()) != null) 
                String[] data = line.split("    ");
                try 
                    data[3] = data[3].substring(0, data[3].length() - 1); // delete 元
                    Course course = new Course(data[0], data[1], Integer.parseInt(data[2]), Integer.parseInt(data[3]));
                    courses.add(course);
                 catch (Exception e) 
            
            br.close();
         catch (IOException e) 
            e.printStackTrace();
        
    
    

追问

为什么运行不了呢?

追答

出什么错。。。

private static final String FILE = "data.txt"; // !!!modify

这一行要改成你自己的文件的路径。

追问

就是运行出来的答案不正确,要求输出的是 课时价格/课时 的最大三个

追答

敢自己调试一下么?

String[] data = line.split("    "); // !!!!!
try 
    data[3] = data[3].substring(0, data[3].length() - 1); // delete 元
    Course course = new Course(data[0], data[1], Integer.parseInt(data[2]), Integer.parseInt(data[3]));
    courses.add(course);
 catch (Exception e) 

多半这里抛异常了,debug一下这段代码,你的文件内容可能不是按照tab键隔开的

参考技术A

    首先创建个课程类

    通过io流去读取文件

    将每条记录存放到对象中

    用collections进行排序

    输出最贵的前三门课程


追问

可不可以给我个具体的代码呢。十分感谢

追答

现在没时间写,你要的话 可以迟点再写给你

追问

恩那写好发我好吧,谢啦

追答

已经有朋友写了,代码都贴出来了。呵呵 我就不写了

以上是关于java读取文件中的内容并进行排序。求大神支招 ~急!!的主要内容,如果未能解决你的问题,请参考以下文章

求大神支招,Windows下安装uwsgi失败是啥情况

eclipse点击运行出现这种情况,然后任意选择一个点击ok之后都没反应,咋办,求大神支招,百度了

java怎么实现每天定时读取文件,然后在写到数据库中呢

Java打包成EXE出现错误,java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory,求各位大神支招。

python中这个算法该怎么解释?求大神支招。

python在pycharm上运行DEbug报错,求大神支招帮忙解决下