【问题标题】:android Parse String into doubleandroid将字符串解析为双精度
【发布时间】:2011-06-27 00:35:05
【问题描述】:

我有一个 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();
}

然后将经纬度发送并保存在服务器数据库中,而不是其他意图获取数据库并获取此字符串以能够将其更改为双倍

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" 时,什么也没发生——没有强制关闭。 我该如何解决这个问题,考虑将纬度和经度作为未知符号发送时的两倍?

【问题讨论】:

  • Log double 值看看它是什么。如果它是一个真正的双倍,那么它就不会失败。

标签: android


【解决方案1】:

当您将字节写入流时,您并没有将它们写成两行。你把它们写成两个字节序列。然后,当您阅读它们时,您正在阅读两行。如果没有换行符怎么办?另一件事是,您可能不需要将它们转换为字符串。您应该能够通过流将值作为其二进制表示形式发送。您也应该了解主机字节顺序和网络字节顺序之间的区别,但实际上我不太确定它与 Java 有什么关系。

如果要将它们作为字符串发送,为什么不使用像 JSON 这样的数据交换格式?

无论如何,解决此问题的廉价方法是在每行 Double.toString() 行的末尾添加一个换行符,因此当您读取另一侧的数据时,您会在每一行上得到一个双精度数,而不是让你的第二行一无所获。

【讨论】:

  • z = Double.toString(X);字符串孤独 = ( "\n ");双 Y=loc.getLongitude(); z2= Double.toString(Y);
  • 你的意思是添加新行\n?
  • @gfgf,由于您要读取一行两次以获取值,因此您需要在流中的每一个之后都有一个换行符
猜你喜欢
  • 2012-10-21
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
相关资源
最近更新 更多