当前位置: 首页 > 知识库问答 >
问题:

比较java中的两个csv文件并对double进行近似匹配

容磊
2023-03-14
first.csv
 Name    price-1    price-2
 item1    5.12       6.12
 item2    4.23       5.56
 item3    11.2       12.23

second.csv

 Name    price-1     price-2
 item1    5.12       6.10
 item2    4.20       5.50
 item3    11.19      12.19

共有1个答案

杜骏祥
2023-03-14

您在标记中列出了junit。

JUnit的.equals(double,double,accurition)允许您指定它们必须与最后一个参数有多接近。

我只需要读入值,然后调用。在测试中每一个...

String[] line = currentLine.split(",")

我还建议您传入可选字符串。测试行如下所示:

assertEquals("item "+file1.line[0]+" values do not match",
    Double.parseDouble(file1.line[1]),
    Double.parseDouble(file2.line[1]),
    0.001)

还有一个问题,就是确保为每个文件读取的行是相同的--使它们正确配对。如果保证它们的顺序相同,您就可以了,但如果不是,您可能需要按名称字段对第一个文件进行散列:

for(String line: file1.readNextLine()) 
    file1hash.put(line.split(",")[0],line)

然后,在迭代第二个文件时,您可以轻松地执行以下操作:

for(String line2: file2.readNextLine())  {
    String line1=file1hash.get(line2.split(",")[0])
 类似资料:
  • 给定两个csv文件: 我想创建一个新的csv文件,我们将调用UpdatedList.csv,它具有来自File1.csv的每个条目减去SKU在File1.csv和File2.csv.的任何行 下面的代码会做我想做的,但是我相信有一个更有效的方法。没有循环我怎么能做到这一点?我的代码如下。

  • 这是一个Java代码,应该测试小数点后的前三位是否相同。而我需要编写这个程序没有一个主方法。

  • 我有两个文件file1。txt和file2。txt。 文件1。文本 file2.txt 我想匹配文件1的第1、2和3列。带有文件2第1、4和5列的txt。txt。如果匹配,则将匹配行与以下行一起打印,直到,但不要打印。我用“awk”命令试过了

  • 我想从Solution Explorer中选择两个C#代码文件进行文本比较。我的机器上安装了WinMerge,它在命令行上接受多个文件名。所以我试着用Openwith。。。命令并将WinMerge添加到现有选项列表中。但问题是我不知道在Arguments文本框中写什么。将其设置为%1只需将第一个选定的文件发送到WinMerge即可。%VS无法识别2,并将其粘贴到WinMerge中。 发送两个文件的

  • 问题内容: 我想让’==’运算符在我的程序中使用近似比较:如果x和y的浮点值相等(==) 有什么好的方法呢?鉴于float是内置类型,我认为我不能重新定义==运算符,可以吗? 请注意,我想使用float的其他功能,唯一要更改的是相等运算符。 编辑: 感谢您的回答,我了解您关于可读性和其他问题的观点。 也就是说,如果可能的话,我真的更希望实际上继续使用常规的float类型,而不是使用新的类或新的比较

  • 问题内容: 我需要比较两个CSV文件并在第三个CSV文件中打印出差异。在我的情况下,第一个CSV是一个名为old.csv的哈希表的旧列表,第二个CSV是包含新旧哈希表的新哈希表。 这是我的代码: 第三个文件是旧文件的副本,而不是更新文件。怎么了 ?我希望你能帮助我,非常感谢! PS:我不想使用diff 问题答案: 问题在于您正在将中的每一行与中的同一行进行比较。只要一个文件中有多余的一行,您就会发