字典和地图

时间:2016-10-14 12:58:41

标签: java dictionary

我刚刚开始编程的冒险。我真的很喜欢这个主题,但有时候我会遇到一些我不完全理解的东西 像这样,例如:

//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

1 个答案:

答案 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