2014-02-21 3 views
0

Я загружая HashMap как этотЗагрузка HashMap в Java

public void loadFromDefault() { 
    keys.clear(); 
    try { 
     FileReader fr = null; 
     BufferedReader br = null; 

     fr = new FileReader(new File("settings.txt")); 
     br = new BufferedReader(fr); 

     String s; 
     while ((s = br.readLine()) != null) { 
      String[] sa = s.split("=",2); 
      keys.put(sa[0], Integer.getInteger(sa[1])); 
     } 

     fr.close(); 
     br.close(); 

    } catch (Exception e) { 
     e.printStackTrace();    
    } 
} 

Мой settings.txt выглядит, что

k_close=1 

теперь доступ к HashMap keys.get("k_close").intValue();, но я вызвала NullPointerException.

Когда я жестко кодирую keys.put("k_close",1);, он работает. Разделение строки чтения работает правильно.

+1

Если вы вызываете 'System.out.println (keys)', что вы получаете? –

+0

Вы отлаживаете то, что помещено в ваш список? – Smutje

+2

'Integer.getInteger' - это не то, что вы ищете. _ "Определяет целочисленное значение системного свойства с указанным именем. [...] Если нет свойства с указанным именем, если указанное имя пустое или пустое или если свойство не имеет нужного числового формата , то возвращается null. "_ –

ответ

6

Вы должны использовать Integer.parseInt() вместо метода getInteger. Это то, что вам нужно.