比较csv中的值和不同对的打印数量

时间:2017-01-01 11:59:46

标签: java csv

大家好,新年快乐!

我正在处理csv文件,如下所示:

orange | red
blue   | green
red    | red
brown  | brown
yellow | black
grey   | pink

我的目标是扫描每一行并检查每一对是否由同一项构成。

我想打印包含不同商品的总行数。

在这种情况下,我们有4个。

我还要打印哪一行包含它们,以及各自的编号。

在这种情况下:

1 orange red
2 blue   green
5 yellow black
6 grey   pink

我在这里搜索过类似的问题,但我能找到的只是多个csv文件。

我正在使用Java ......从我迄今为止所理解的情况来看,一个良好的开端将是:

Scanner scanner = new Scanner(new File("path to my csv file"));
scanner.useDelimiter(";");
while(scanner.hasNext()){
// comparing items in rows
}
scanner.close();

我现在不知道在while循环中该做什么。

非常感谢!

1 个答案:

答案 0 :(得分:2)

下面的实现应该有效,假设每行的两个项用分号和可选的空格分隔。如果不是这种情况,那么您可以更改用于拆分每一行的分隔符。

int total = 0;
int rowNum = 1;
while (scanner.hasNext()) {
    // comparing items in rows
    String[] parts = scanner.nextLine().split("\\s*;\\s*");
    if (!parts[0].equals(parts[1])) {
        System.out.println(rowNum + " " + parts[0] + " " + parts[1]);
        ++total;
    }
    ++rowNum;
}

System.out.println("There were " + total + " rows where the two items were not equal.");