2014-01-04 3 views
-5

У меня есть строковый массив данных, в котором я сохранил разные строковые значения и только два значения массива, которые я хочу преобразовать в long, но он показывает мне, что NumberFormatException ниже - это мой код, в котором я сосал. Кроме того Logcat отображает значения с индексом 7 и 8.Как избежать исключения формата числа в android при преобразовании строки в long?

метод является

private void dataSpliter(String data) 
    { 
     final String[] myData= data.split("[Â]+"); 

     Log.e("First Name", ""+myData[0]); 
     Log.e("Last Name", ""+myData[1]); 
     Log.e("Father", ""+myData[2]); 
     Log.e("Gender", ""+myData[3]); 
     Log.e("DOB", ""+myData[4]); 
     Log.e("Contact", ""+myData[5]); 
     Log.e("Address", ""+myData[6]); 
     Log.e("Latitude", ""+myData[7]); 
     Log.e("Longitude", ""+myData[8]); 

     latitude = (long)Long.valueOf(myData[7]); 
     longitude = (long)Long.valueOf(myData[8]); 
} 

Logcat показывает значение myData[7] =34.0012143 и myData[8] =71.5452969

+0

Опубликовать исключение по вашему вопросу. Также не нужно бросать его надолго. –

+0

Показать полный код и полный стек. –

+3

и, кроме того, вывести значения String в индексы 7 и 8 ... –

ответ

1

Это потому, что данные в myData[7] или myData[8] не содержащий parsable длинное значение , Либо отлаживайте, либо включайте журналы, чтобы найти неправильное значение и исправить его.

Используйте вместо этого double.

double latitude = Double.valueOf(myData[7]); 
+3

Возможно, комментарий ??? –

+0

Теперь плз проверить мой код – user3131640

1

34.0012143 и 71.5452969 не являются целыми числами и не может быть разобрано как тоскует.

Разберите их с плавающей точкой с двойной точностью с Double.valueOf() или Double.parseDouble().

Некоторые API ожидали увидеть long микродегреги вместо double градусов. Для этого умножьте на 1e6 и наберите long.

Смежные вопросы