2016-10-14 19 views
0

私はちょうどプログラミングで私の冒険を始めました。私は本当にテーマが好きですが、時には私は完全に理解できないものを見つけることがあります。例えばこのよう
、:私は、このような出力を取得している必要がありますが、私はこのような何かを得る辞書と地図

//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(); 
    } 
} 

あなたの出力(stdout)

sam=99912222 

予想される出力

sam=99912222 
Not found 
harry=12299933 
+0

そしてあなたは分かりませんか? – Amy

+0

ヒント: 'null'と' 'null ''は同じものではありません –

+2

'phonebook.equals(" null ")== true'が奇妙に見える – dit

答えて

3

phonebookはハッシュマップです。それは、私はあなたが適切にnull値をチェックする方法について混乱していると信じて"null"

if(phonebook.equals("null") == true) 

の文字列を等しくすることはできません。

ハッシュマップのキーが存在しない場合は、ではなく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 ifの必要はありません

+0

私はどのように問題があったのか分かりません –

+0

私はどのように問題があったのでしょうか。 int phonenumber = phonebook.get(s); –

+0

されているはずだった 整数phonennumber = phonebook.get(s); –