这里我试图从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
答案 0 :(得分:2)
您必须使用String s1 = scanner.nextLine();
,而不是String s1 = scanner.next();
它会工作并输出:GBR
因为默认使用next()
(from the doc),所以空格作为分隔符,所以它只需要最后一个单词
在String s1 = scanner.next();
之后的情况下,s1
是juste United