如何从分隔的 CSV 文件中解析负值字符串

问题描述 投票:0回答:1

我正在尝试读取一个以逗号分隔的 CSV 文件,该文件在每行中显示城市、国家/地区、纬度和经度。我的项目的目标是打印一条显示南半球所有城市的声明,这意味着读取每行的纬度并将这些字符串转换为整数。问题是我在尝试解析字符串时不断收到“NumberFormatException”,我假设它是因为其中一些字符串数字是负值。

阅读器正在转换的纬度值是:39、-57、-25、35 当所有都是正确的整数时,该错误会在输入字符串纬度处抛出 NumberFormatException,因此我只能假设它是因为整数中的破折号阻止它解析为整数。

我的代码读取每一行并将其拆分为标记,以便我可以单独评估每一列,并查看解析的纬度整数值是否小于零。这表明具有该纬度的城市位于南半球,然后我可以将其添加到我的南半球城市 ArrayList 中,以便稍后打印。

    String path = args[0];
    String delimiter = ","; 
    try {
      BufferedReader reader = new BufferedReader(new FileReader(path)); 
      ArrayList<String> cities = new ArrayList<String>();
      reader.skip(1); 
      while (reader.ready()) {
        String line = reader.readLine(); 
        String[] tokens = line.split(delimiter); 
        if (Integer.parseInt(tokens[2]) < 0) {
          cities.add(tokens[0]);  
        }
      }

关于如何解决这个问题有什么建议吗?

java csv numberformatexception reader
1个回答
0
投票

错误不是由负号引起的,而是由间距引起的。如果您的输入数据确实如您在问题中粘贴的那样,则您的纬度标记不是

"-25"
,而是
" -25"
。在尝试解析之前添加一个trim(),然后一切就准备好了。

Integer.parseInt(tokens[2].trim())

© www.soinside.com 2019 - 2024. All rights reserved.