类型不匹配,无法从元素Object转换为String

问题描述 投票:1回答:1

我从此网站复制了此代码:https://www.w3schools.com/java/showjava.asp?filename=demo_hashmap_loop_key

但是它仍然给出上面提到的错误:'for(String i:capitalCities.keySet())!'

有人知道如何纠正此错误?


import java.util.HashMap;

public class MyClass {
  public static void main(String[] args) {
    HashMap capitalCities = new HashMap();
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");

    for (String i : capitalCities.keySet()) {
      System.out.println(i);
    }
  }
}

java string object mismatch
1个回答
2
投票

您的程序将引发以下编译错误。

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from element type Object to String

从您的代码中,capitalCities.keySet()将返回Object []。因此,为了返回字符串集,我们可以使用以下解决方案之一。

解决方案1:for (Object i : capitalCities.keySet())将数据类型'i'更改为通用对象。

解决方案2:HashMap<String, String> capitalCities = new HashMap<String, String>();我们可以将键的数据类型和映射的值定义为String。

注意:为使代码易于阅读,建议使用“解决方案2”。

© www.soinside.com 2019 - 2024. All rights reserved.