我有一个Android Intent发送到服务器的纬度和经度像这样发送字符串
try {
Double X = loc.getLatitude();
z = Double.toString(X);
Double Y = loc.getLongitude();
z2 = Double.toString(Y);
outToServer.writeBytes(z);
outToServer.writeBytes(z2);
}
catch (IOException e1) {
e1.printStackTrace();
}
然后纬度和经度发送并保存在服务器数据库中比其他意图获取数据库的内容并获取此字符串以便能够将其更改为double
String x=inFromServer.readLine();
String y=inFromServer.readLine();
x = x.trim();
Double p1 = Double.parseDouble( x);
y = y.trim();
Double p2 = Double.parseDouble( y);
但它强制关闭尽管当我使用相同的命令转换字符串s =“12.23”时没有发生任何事情 - 没有力量关闭。 我怎样才能解决这个问题,考虑将纬度和经度作为未知符号发送的双倍发送?
答案 0 :(得分:1)
当您将字节写入流时,您没有将它们写为两行。你把它们写成两个字节序列。然后,当你阅读它们时,你正在阅读两行。如果没有换行怎么办?另一件事,你可能不需要将它们转换为字符串。您应该能够通过流将值作为二进制表示形式发送。你应该理解主机和网络字节顺序之间的区别,但我实际上并不确定它与java有什么关系。
如果您要将它们作为字符串发送,为什么不使用像JSON这样的数据交换格式?
无论如何,解决这个问题的便宜方法是在每条Double.toString()行的末尾添加一个换行符,所以当你读取另一行的数据时,你会在每一行上得到一个双数,而不是让你的第二行没有任何结果。