我想打印从扫描仪对象到达的所选键和值。我以这种方式尝试过,但发现有所不同:
TreeMap<String, String> oldbooks = new TreeMap<String,String>();
oldbooks.put("WaltDisney", "DonaldDuck");
oldbooks.put("Shakespeare", "Amleto");
oldbooksput("Dickens", "OliverTwist");
Scanner in = new Scanner(System.in);
String title = in.next();
boolean found = oldbooks.containsValue(title);
for(String k : oldbooks.keySet())
{
if(found) {
System.out.print("The value is : "+ oldbooks.get(k)
+" The Key is: "+ k);
}
}
我注意到以这种方式,我可以获得每个键和每个值,我想要正确的键和正确的值。如果我更改if条件,然后输入:
if(title.equals(oldbooks.get(k))
现在,它的功能非常好。那么,为什么我不能用第一个解决方案打印指定的值和键?我知道.equals会给我真与假,就像containsValue一样。
先感谢您。
最佳答案
根据您的编辑,您正在将值放在其他映射archivio
中,并尝试在其他映射oldbooks
中进行搜索。
那是故意的吗?也许这就是代码中的问题!
下面的代码对我来说很好用;
TreeMap<String, String> oldbooks = new TreeMap<>();
oldbooks.put("WaltDisney", "DonaldDuck");
oldbooks.put("Shakespeare", "Amleto");
oldbooks.put("Dickens", "OliverTwist");
Scanner in = new Scanner(System.in);
String title = in.next();
boolean found = oldbooks.containsValue(title);
for(String k : oldbooks.keySet())
{
if(found) {
System.out.print("The value is: "+ oldbooks.get(k)
+" The Key is: "+ k);
}
}
当我在IDE中运行此代码时,只需要在控制台中键入
DonaldDuck
即可得到预期的结果(打印所有键值对)。另外,仅供参考,您在system.out.print语句中打印的键值不正确。
密钥是
k
,值是您使用oldbooks.get(k)
获得的值。并非相反。 (如第一条评论中的@ dan1st所示)。