![](/img/trans.png)
[英]How to Convert a String ArrayList to a Double ArrayList and calculate the sum of values?
[英]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.