比较两个文件中的每一行

时间:2014-09-15 11:31:43

标签: java file file-io

我有一项任务来比较两个文件中的行。值作为字符串存储在文件中。我是Java新手所以如果有一些愚蠢的错误,请原谅:) file1包含

1044510=>40000
2478436011=>10000
2478442011=>3500
2498736011=>3000
2498737011=>550
2478443011=>330
2478444011=>1,550

文件二包含

1044510=>30,097
2478436011=>9,155
2478442011=>2,930
2498736011=>2,472
2498737011=>548
2478443011=>313
2478444011=>1,550

我想从第一个文件和第二个文件中取第一行,并检查第一个文件中line1的值是否大于第二个文件。是(40000>30,097)还是不。不想在“=>”之前取值。 我已经完成了一个示例代码但运行时出错。

private static void readfiles() throws IOException {
    BufferedReader bfFirst = new BufferedReader(new FileReader(first_list));
    BufferedReader bfSecond = new BufferedReader(new FileReader(second_list));

    int index = 0;
    while (true) {

        String partOne = bfFirst.readLine();
        String partTwo = bfSecond.readLine();
        String firstValue=null;
        String secondValue=null;
        int firstValueInt;
        int secondValueInt;

        if (partOne == null || partTwo == null)
        {
            break;
        }
        else
        {
            System.out.println(partOne + "-----\t-----" + partTwo);
            firstValue=partOne.split("=>")[1];
            secondValue=partTwo.split("=>")[1];
            System.out.println("first valueee"+firstValue);
            System.out.println("second value"+secondValue);
            firstValueInt=Integer.parseInt(firstValue);
            secondValueInt=Integer.parseInt(secondValue);

            if(secondValueInt>firstValueInt)
            {
               System.out.println("greater");
            }
        else
        {
            System.out.println("lesser");
        }
      }

    }
}

}

这是我得到的例外

Exception in thread "main" java.lang.NumberFormatException: For input string: "30,097"
   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
   at java.lang.Integer.parseInt(Integer.java:492)
   at java.lang.Integer.parseInt(Integer.java:527)
   at com.bq.pricefinder.flipkart.findProductDifferenceFromFiles.readfiles(findProductDifferenceFromFiles.java:45)
   at com.bq.pricefinder.flipkart.findProductDifferenceFromFiles.main(findProductDifferenceFromFiles.java:18)

3 个答案:

答案 0 :(得分:3)

这里的问题是您将十进制值解析为整数。

例外

java.lang.NumberFormatException: For input string: "30,097"

是明确的,它表示整数的格式无效的十进制值30,097

使用float而不是int,然后比较。此外,有时它取决于区域设置使用的是十进制符号,对于一个国家/地区可以是,,对于另一个国家/地区可以是.。另请阅读THIS

答案 1 :(得分:1)

Integer.parseInt无法处理包含非数字的字符串。这是NumberFormatException的原因。像这样使用它:

firstValueInt=Integer.parseInt(firstValue.replaceAll(",",""));
secondValueInt=Integer.parseInt(secondValue.replaceAll(",",""));

答案 2 :(得分:0)

只能通过添加此行来获取整数

firstValue = firstValue.replaceAll("[^0-9]", ""); secondValue = secondValue.replaceAll("[^0-9]", "");

然后将其转换为整数