为什么将String解析为double会在我的设备上失败,但在Android Studio中不会失败? [关闭]

问题描述 投票:0回答:2
我正在Android Studio中开发一个程序,该程序将从文本文件中读取一系列Latlng坐标。当我在具有多个设备模拟器的Android Studio中运行该程序时,它运行良好。当我在个人设备上安装该应用并运行该应用时,该应用无法正常运行。我将其范围缩小到以下代码行:

lat = Double.parseDouble(latitude);

其中纬度是字符串,例如:“ 49.102832922”

当我删除此行时,该应用程序运行正常。我也尝试将其解析为Long并得到相同的结果。这是完整的课程

public class LoadRoute { private File file; private ArrayList <LatLng> gpsList; private LatLng latLng; public ArrayList<LatLng> loadFiles2(String fName){ double lat, lng; file = new File(fName); gpsList = new ArrayList<LatLng>(); //gpsList.add(new LatLng(49.102832922, -97.555331112)); //gpsList.add(new LatLng(49.18011, -97.93895)); System.out.println("Load files " + fName); InputStream fis = null; try{ fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); String text; String latitude="", longitude=""; int start = 0; while ((text = br.readLine()) != null) { for(int i=0; i<text.length(); i++){ if(text.substring(i, i+1).equals("(")){ start = 1; }else if(text.substring(i, i+1).equals(",")){ start = 2; }else if(text.substring(i, i+1).equals(")")){ start = 3; }else if(start == 1){ latitude= latitude+text.substring(i,i+1); }else if(start == 2){ longitude= longitude+text.substring(i,i+1); }else{ start = 0; } } System.out.println("latitude " + latitude + " Longitude" + longitude); lat = Double.parseDouble(latitude); lng = Double.parseDouble(longitude); latLng = new LatLng(lat, lng); gpsList.add(latLng); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } return gpsList; }

}
java android parsing double
2个回答
0
投票
请确保您始终在数字中得到纬度字符串。如果您按照问题中的说明使用lat,这应该不会失败。就像大家所说的那样,连接您的手机并运行您的应用,然后尝试调试。在解析之前检查您得到的值。

0
投票
感谢所有回答。我只是在学习Android Studio,所以我不知道您可以连接物理电话并对其进行调试。我正在连接两个纬度,因此产生了我可以修复的floatDecimal错误。
© www.soinside.com 2019 - 2024. All rights reserved.