使用值(带空格)从Hashmap查找键

时间:2017-10-02 20:30:55

标签: java hashmap

这里我试图从Hashmap中获取关键值,但每当我尝试“大不列颠及北爱尔兰联合王国”时,它应该返回“GBR”。它显示我“没有找到记录”。怎么解决这个问题。任何帮助将不胜感激。

(此处如果您输入国家/地区代码,则会返回国家/地区名称,如果您输入国家/地区名称,则会返回国家/地区代码。)

public class AppliedWithCS_1 {

public static Object getKeyFromValue(HashMap hashMap, Object value) {
for (Object o : hashMap.keySet()) {
  if (hashMap.get(o).equals(value)) {
    return o;
  }
}
return null;
}

public static void main(String[] args) {

    HashMap hashMap=new HashMap<>();
    hashMap.put("AFG","Afghanistan");
    hashMap.put("GBR","United Kingdom of Great Britain and Northern Ireland");
    hashMap.put("IDN","Indonesia");
    hashMap.put("IND","India");
    System.err.println("Enter Country Code or Country Name=");
    Scanner scanner=new Scanner(System.in);
    String s1=scanner.next();
    if(s1.length()>3&&hashMap.containsValue(s1))
    {
        System.out.println(getKeyFromValue(hashMap,s1));
    }
    else if(hashMap.containsKey(s1))
        System.err.println(hashMap.get(s1));
    else
        System.err.println("No Records Found");
}
}

输出:

   Enter Country Code or Country Name=
   Afghanistan
   AFG

   Enter Country Code or Country Name=
   United Kingdom of Great Britain and Northern Ireland
   No Records Found

1 个答案:

答案 0 :(得分:2)

您必须使用String s1 = scanner.nextLine();,而不是String s1 = scanner.next();

它会工作并输出:GBR

因为默认使用next() (from the doc),所以空格作为分隔符,所以它只需要最后一个单词

String s1 = scanner.next();之后的情况下,s1是juste United