无法从String []转换为String

时间:2011-05-26 10:11:12

标签: java android string

这是我的代码..我想从纬度和经度中找到一个城市名称.. 现在我明白了:

"Address[addressLines=[0:"Mustamäe tee 145",1:"12918 Tallinn",2:"Estonia"],feature=145,admin=Harju County,sub-admin=null,locality=Tallinn,thoroughfare=Mustamäe tee,postalCode=12918,countryCode=Estonia,countryName=null,hasLatitude=true,latitude=59.4123264,hasLongitude=true,longitude=24.6903851,phone=null,url=null,extras=null]"

我试图将它转换为字符串并拆分它..我做了一个字符串数组但是当我尝试将“cityName”分配给字符串数组“name”时我收到此错误 - “类型不匹配:无法从字符串[]转换字符串“

你能告诉我,我错在哪里吗?

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class GPSHelper {
static double latitude;
static double longitude;
static String[] name = new String[5];

public static void getCity(LocationManager lm, Context appContext) {

    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    longitude = location.getLongitude();
    latitude = location.getLatitude();
    final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            longitude = location.getLongitude();
            latitude = location.getLatitude();
        }

        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub

        }

        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub

        }

        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub

        }
    };

    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);

    double latitude = location.getLatitude();
    double longitude = location.getLongitude();
    Geocoder userLocation = new Geocoder(appContext, Locale.getDefault());   
    List<Address> cityName;
    try {
        cityName = userLocation.getFromLocation(latitude, longitude, 1);
        if(cityName != null && !cityName.isEmpty()) {
            for(int i=0; i<5; i++){

            name[i] = cityName.get(0).toString().split("");

            }
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

}

7 个答案:

答案 0 :(得分:3)

这里的所有答案都很好。 但我想知道为什么你会在空角色上使用分裂?

你知道它会返回单个字符数组(并且在开始时没有任何内容)吗?

签出代码:

String str ="dasd";
String[] strr = str.split("");
for(int i=0; i < strr.length;i++)
    System.out.println("i="+i+";str="+strr[i]);

输出:

i=0;str=
i=1;str=d
i=2;str=a
i=3;str=s
i=4;str=d

我建议自从cityName.get(0)返回后,Address对象会有一个方法,它会返回你的名字,如下所示。

name[i] = cityName.get(0).getName();

希望这有帮助。

答案 1 :(得分:2)

name[i] = cityName.get(0).toString().split("");

name[i]的类型为String,而cityName.get(0).toString().split("")的类型为String[]

答案 2 :(得分:1)

name[i] = cityName.get(0).toString().split("");

这里name [i]只包含字符串,但split(“”)方法需要左侧的String Array。

那个for循环真的需要吗?关于删除for循环和编码的问题

   if(cityName != null && !cityName.isEmpty()) {         

        name[] = cityName.get(0).toString().split("");

    }

答案 3 :(得分:0)

cityName.get(0).toString().split("");

结果返回String[],但name[i]应该是String而不是String[]

为什么要拆分?

答案 4 :(得分:0)

以下行错误:

name[i] = cityName.get(0).toString().split("");

(正如异常消息可能表示的那样)。实际上,您正在尝试使用name[i]方法的结果初始化split,这是一个String,它返回一个字符串数组。

答案 5 :(得分:0)

我对Android没有任何经验,所以我不知道这些方法应该返回什么,但String.split将返回一个String数组。而name [i]只是一个字符串。所以你试图将一个String数组分配给一个简单的String。

答案 6 :(得分:0)

Split方法返回一个String数组;所以当你这样做时:

name[i] = cityName.get(0).toString().split("");

它将返回一个字符串数组,其中包含String的所有字母,