我有一项任务来比较两个文件中的行。值作为字符串存储在文件中。我是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)
答案 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]", "");
然后将其转换为整数