字符串索引超出范围:-1错误

ldfqzlk8  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(360)

字符串索引超出范围:-1是我在hadoop mr的Map器中执行此代码时遇到的错误。

String line = value.toString();
    String[] longLatArray = line.split(",");
    double lat = Double.parseDouble((longLatArray[0]).substring(1));

行如下所示:“(-21.2432363125682,-175.14134768396616,1)”
我的目标是去掉第一个“(”,只把-21.2873623放到我的lat变量中。
编辑:
当我尝试在hadoop接口中进行调试时,得到的结果如下:

attempt_201406251613_0002_m_000000_0: line: (-21.24132363125682,-175.14134768396616,1)
attempt_201406251613_0002_m_000000_0: index 0
attempt_201406251613_0002_m_000000_0: (-21.24132363125682
attempt_201406251613_0002_m_000000_0: index 1
attempt_201406251613_0002_m_000000_0: -175.14134768396616
attempt_201406251613_0002_m_000000_0: index 2
attempt_201406251613_0002_m_000000_0: 1)

当我在本地执行非常相似的代码时,我没有得到任何错误
还有,这里-1的意义是什么?
任何帮助都将不胜感激!

olqngx59

olqngx591#

indexOf() returns -1 when the argument can't be found. It Might be the root Cause.    

 Reproducible code   
String value="";         
String line = value.toString();     
String[] longLatArray = line.split(",");        
double lat = Double.parseDouble((longLatArray[0]).substring(1)); 
System.out.println(lat);
vu8f3i0k

vu8f3i0k2#

public static void main(String[] args) throws Exception {

    String value="(-21.2873623,160.2323,1)";
    String line = value.toString();
    String[] longLatArray = line.split(",");
    double lat = Double.parseDouble((longLatArray[0]).substring(1));
    System.out.println(lat);
}

这是工作为我打算,给我的lat从coords在 value . 这使我相信,无论是在什么问题 value . 您确定该值包含您期望的值吗?您可以通过执行以下操作进行调试:

System.out.println(value); // or use a logging library

并核实一下。1让我相信你已经过了极限,但我不是100%肯定。

相关问题