我刚刚开始编程的冒险。我真的很喜欢这个主题,但有时候我会遇到一些我不完全理解的东西 像这样,例如:
//Complete this code or write your own from scratch
import java.util.*;
import java.io.*;
class Solution{
public static void main(String []argh){
Scanner in = new Scanner(System.in);
Map<String, Integer> phonebook = new HashMap<String, Integer>();
int n = in.nextInt();
for(int i = 0; i < n; i++){
String name = in.next();
int phone = in.nextInt();
phonebook.put(name, phone);
}
// Write code here
while(in.hasNext()){
String s = in.next();
int phonenumber = phonebook.get(s);
if(phonebook.equals("null") == true){
System.out.println("Not found");
}
else if(phonebook.equals("null") == false){
System.out.println(s + "=" + phonebook.get(s));
}
}
in.close();
}
}
我应该已经获得了这样的输出,但我得到了这样的结果:
你的输出(标准输出)
sam=99912222
预期产出
sam=99912222
Not found
harry=12299933
答案 0 :(得分:3)
phonebook
是一个Hashmap。它不能等于"null"
if(phonebook.equals("null") == true)
我相信您对如何正确检查null
值感到困惑。
当Hashmap中的某个键不存在时,它会返回null
,而不是"null"
。此外,您需要检查值,而不是Hashmap本身。
因此
Integer phonenumber = phonebook.get(s);
if(phonenumber == null){
System.out.println("Not found");
}
else {
System.out.println(s + "=" + phonenumber);
}
然后,无关的问题if (val == true)
只是if (val)
。如果你只是反转条件,则不需要else if