我正在尝试读取一个以逗号分隔的 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]);
}
}
关于如何解决这个问题有什么建议吗?
错误不是由负号引起的,而是由间距引起的。如果您的输入数据确实如您在问题中粘贴的那样,则您的纬度标记不是
"-25"
,而是 " -25"
。在尝试解析之前添加一个trim(),然后一切就准备好了。
Integer.parseInt(tokens[2].trim())