Java-处理文件中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-处理文件中的数据相关的知识,希望对你有一定的参考价值。

我有一个看起来像这样的文件:

year        population
1952        120323
1953        136688
1954        161681
....        .....

我想找到那个人口比上一年增加最多的年份。

我尝试了以下代码,但得到了NoSuchElementException,但不确定为什么:

    String path = "filePath";
    File file = new File(filePath);
    Scanner sc = new Scanner(file);
    int y = 0, y1, y2, p1, p2, diff = 0;
    while(sc.hasNext()){
        if(sc.next().equals("year") || sc.next().equals("population")){
            break;
        }else{
            y1 = Integer.parseInt(sc.next());
            p1 = Integer.parseInt(sc.next());
            y2 = Integer.parseInt(sc.next()); // this line throws the exception
            p2 = Integer.parseInt(sc.next());
            if(p2 - p1 > diff){
                diff = y2-y1;
                y = y2;
            }
        }
    }
    System.out.println(y);
答案
尝试一下...

String path = "filePath"; File file = new File (filePath); Scanner sc = new Scanner(file); long year = 0L, population = 0L, largestDiff = 0L; while (sc.hasNext()) { String line = sc.nextLine(); if (line.startsWith("year")) { continue; } else { String[] parts = line.split(" +"); // Note the space before "+" long currentYear = Long.parseLong(parts[0]); long currentPopulation = Long.parseLong(parts[1]); long diff = currentPopulation - population; if (dif > largestDiff) { largestDiff = diff; year = currentYear; population = currentPopulation } } } System.out.println(year); System.out.println(largestDiff);

以上是关于Java-处理文件中的数据的主要内容,如果未能解决你的问题,请参考以下文章

LockSupport.java 中的 FIFO 互斥代码片段

如何从 Firebase 获取数据到 Recyclerview 中的片段?

如何使用java将数据从片段传递到android中的另一个片段?

java 反射代码片段

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

使用片段中的处理程序时出现非法状态异常