簡體   English   中英

如何對字符串雙值求和

[英]How to Sum String double Value

我有一個像24.5 km10.1 km30.9 km這樣的字符串。

我想計算字符串中所有距離的總和,但我無法做到。 我收到NumberFormatException

這是我的代碼

String stringValue = getDistanceOnRoad(lat, long, lat2, long2);
double sumValue = 0.0;

Log.d("my string is", stringValue);
try {
    sumValue = Double.parseDouble(stringValue);
    Log.d("distance there plus", String.valueOf(sumValue));
} catch (NumberFormatException e){
    System.out.println("not a number");
}

我正在從這種方法中獲得距離,一切正常,但我無法計算所有距離的總和。

如何使用經度和緯度值計算兩個位置之間的距離

private String getDistanceOnRoad(double latitude, double longitude,
        double prelatitute, double prelongitude) {
    String result_in_kms = "";
    String url = "http://maps.google.com/maps/api/directions/xml?origin="
            + latitude + "," + longitude + "&destination=" + prelatitute
            + "," + prelongitude + "&sensor=false&units=metric";
    String tag[] = { "text" };
    HttpResponse response = null;
    try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        HttpPost httpPost = new HttpPost(url);
        response = httpClient.execute(httpPost, localContext);
        InputStream is = response.getEntity().getContent();
        DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                .newDocumentBuilder();
        Document doc = builder.parse(is);
        if (doc != null) {
            NodeList nl;
            ArrayList args = new ArrayList();
            for (String s : tag) {
                nl = doc.getElementsByTagName(s);
                if (nl.getLength() > 0) {
                    Node node = nl.item(nl.getLength() - 1);
                    args.add(node.getTextContent());
                } else {
                    args.add(" - ");
                }
            }
            result_in_kms = String.format("%s", args.get(0));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result_in_kms;
}

如果您的字符串類似於 24.5 km10.1 km30.9 km,那么在將其轉換為 double 之前,您應該解析該字符串。

String stringValue = getDistanceOnRoad(lat, long, lat2, long2);
double sumValue = 0.0;

Log.d("my string is", stringValue);
try {
  String[] distances = stringValue.split(" km");
  for (String distance: distances) {
    sumValue = sumValue + Double.parseDouble(distance);
  }
  Log.d("distance there plus", String.valueOf(sumValue));
} catch (NumberFormatException e) {
  System.out.println("not a number");
}

好的,問題在於您正在嘗試解析String S = "10.1 km"; 到雙變量。 但是,字符串的“km”部分不是數字,因此 java 編譯器無法解析它。 而是為公里數定義一個雙變量: double km = 10.1和一個字符串變量用於“km”。 然后(當您想將它作為字符串獲取時)使用操作的答案重新定義 km 的變量。

試試這個

String test = "24.5 km10.1 km30.9 km";
String[] parsedString = test.split("(km)");
double sum = 0;
for(String s : parsedString) {
    sum += Double.parseDouble(s.trim());
}

試試這個

String s = "24.5 km10.1 km30.9 km";

String[] items = s.split("km");
double result = 0;

for (int i = 0 ; i < items.length ; i++) {   
    result = result + Double.parseDouble(items[i]); 
}

System.out.print("result = " + result);

您應該按公里分割,然后對值求和,這是方法:

private static double parseAndSum(String string) {

    double sumValue = 0.0;
    String[] nums = string.split("km");

    int i=0;
    for(i=0;i<nums.length;i++) {
        sumValue += Double.parseDouble(nums[i].trim());
    }
    return sumValue;
}

在這里你如何稱呼它:

String string = getDistanceOnRoad(latitude, longitude, prelatitute, prelongitude);    
double result = parseAndSum(string);
System.out.println("Total is : " + result + "km");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM