Java 字典和地图

Java 字典和地图,java,dictionary,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);

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

//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
Not found
harry=12299933

phonebook
是一个Hashmap。它不能等于字符串
“null”

我相信您对如何正确检查
null
值感到困惑

当Hashmap中的键不存在时,它返回
null
,而不是
“null”
。此外,您需要检查值,而不是哈希映射本身

所以

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,因为
电话簿
是一个哈希映射。它不能等于字符串
“null”

我相信您对如何正确检查
null
值感到困惑

当Hashmap中的键不存在时,它返回
null
,而不是
“null”
。此外,您需要检查值,而不是哈希映射本身

所以

Integer phonenumber = phonebook.get(s);
if(phonenumber == null){
   System.out.println("Not found");
}
else {
    System.out.println(s + "=" + phonenumber);
}


然后,不相关的问题
if(val==true)
就是
if(val)
。如果只反转条件,则无需使用
,否则如果
,并且您不了解哪部分?提示:
null
“null”
不是一回事
phonebook.equals(“null”)==true
看起来很奇怪,输入是什么?问题似乎来自这样一个事实,即您没有处理所有三个输入,而只处理第一个输入。您正在调用映射的等号,为什么?您不理解哪一部分?提示:
null
“null”
不是同一件事
电话簿。等号(“null”)==true
看起来很奇怪输入是什么?问题似乎来自这样一个事实,即您没有处理所有三个输入,而只处理第一个输入。您正在调用映射的等号,为什么?我不知道如何调用,但问题是我不知道如何调用,但问题是int phonenumber=phonebook.get(s);并且应该是整数phonennumber=phonebook.get;正确的。您将
整数
解包为
int
,因此可以与
null
正确比较。如果这解决了问题,欢迎您使用刚才所做的。它解决了问题,我非常感谢您的支持!我想我还有很多学习要做。我不知道怎么做,但问题是我不知道怎么做,但问题是int phonenumber=phonebook.get(s);并且应该是整数phonennumber=phonebook.get;正确的。您将
整数
解包为
int
,因此可以与
null
正确比较。如果这解决了问题,欢迎您使用刚才所做的。它解决了问题,我非常感谢您的支持!我想我还有很多东西要学。
Integer phonenumber = phonebook.get(s);
if(phonenumber == null){
   System.out.println("Not found");
}
else {
    System.out.println(s + "=" + phonenumber);
}