2015-03-30 5 views
-2

Перед тем, как печатать выбранные значения карты, я столкнулся с проблемой NullPointerException. Если selectedCert список содержит (AA, BB, CC), карта будет печатать:Как обрабатывать нулевое значение на карте

EN
EN
EN

Однако, если selectedCert список содержит только 2, которые являются (AA, BB), будет исключение нулевого указателя, поскольку ccLang - null.

отрезала кода:

private String ccLang;//Setter and Getter  
    Map<String, String> Cert = new HashMap<String,String>(ss.size()); 

    Cert.put("AA", "EN");  
    Cert.put("BB", "EN");  
    Cert.put("CC", ccLang); 

    for(String key: selectedCert)  
     System.out.println(Cert.get(key));  
    System.out.println(); 

Как решить эту проблему?

+0

Нулевая проверка перед вызовом «положить», это то, что вы ищете для р? – kosa

+0

Откуда: NullPointerException? «HashMap» разрешено иметь «нулевые» ключи и значения. –

+0

Проверьте, пожалуйста, код. Тот, который вы отправили, не будет компилироваться, и если «исправлено», вы не получите NPE, он просто напечатает нуль ... – migueldiab

ответ

0

Если значение может быть нулевым, просто добавьте пустой чек:

if(value != null) { 
    map.put(key, value); 
} 

Вы можете использовать метод для этого:

private static void putNonNull(String key, String value, 
           Map<String, String> map) { 
    if(value != null) { 
     map.put(key, value); 
    } 
} 

putNonNull("AA", "EN", Cert); 
putNonNull("BB", "EN", Cert); 
putNonNull("CC", ccLang, Cert); 
+0

Спасибо, я пробовал свой путь, однако он по-прежнему показывает исключение нулевого указателя. Начальное значение переменной ccLang равно «» (Two Quotes = Blank) – Learner30

0

Я редактировал код немного, чтобы увидеть, если это это то, о чем вы говорите, но это будет отлично работать:

String ccLang = null;//Setter and Getter 

    Map<String, String> Cert = new HashMap<String,String>(10); 

    Cert.put("AA", "EN"); 

    Cert.put("BB", "EN"); 

    Cert.put("CC", ccLang); 

    for (Entry<String, String> entry : Cert.entrySet()) { 
     System.out.println(entry.getKey()); 
     System.out.println(entry.getValue()); 
    } 
+0

Спасибо за помощь – Learner30

Смежные вопросы