2016-04-13 3 views
0

ЭТО НЕ ДУБЛИКАТ. Похоже, что это на первый взгляд, но решение других проблем не применяется.Java Map.put() метать нулевой указатель

Когда я запускаю следующий метод под Java 1.7, я получаю исключение нулевого указателя на

normalOutCurrVals.put(new Double(x), new Byte(i));

Я прочитал документацию и ответы здесь для тесно связанных задач, но до сих пор я и мои команда в тупике. Есть ли что-то очевидное, что нам не хватает?

Мы просто хотим помещать сопоставления из двойных значений (которые появляются в нашем программном интерфейсе) к своим байтовым аналогам для хранения в памяти имитируемого устройства.

Вот Importants декларации:

public final Map<Double, Byte> normalOutCurrVals = mapNormalOutCurrVals(); 
public final Map<Double, Byte> magnetOutCurrVals = mapMagnetOutCurrVals(); 
public final Map<Integer, Byte> freqVals   = mapFreqVals(); 
public final Map<String, Byte> onTimeVals  = mapOnTimeVals(); 
public final Map<String, Short> offTimeVals  = mapOffTimeVals(); 
public final Map<String , Short> pulseWidthVals = mapPulseWidthVals(); 

Любая помощь будет высоко ценится.

private Map<Double, Byte> mapNormalOutCurrVals(){ 

    Map<Double, Byte> map = new HashMap<Double, Byte>(); 
    double x = 0.000; 
    byte i = 0; 

    //first set of normal output currents 
    while (x <= 2.000){ 
     normalOutCurrVals.put(new Double(x), new Byte(i)); 
     x += 0.125; 
     i++; 
    } 

    while (x <= 4.000){ 
     normalOutCurrVals.put(new Double(x), new Byte(i)); 
     x += 0.250; 
     i++; 
    } 

    while (x <= 8.000){ 
     normalOutCurrVals.put(new Double(x), new Byte(i)); 
     x += 0.500; 
     i++; 
    } 

    return map; 
} 
+1

Что такое 'normalOutCurrVals'? Это «нуль»? – Savior

+0

Почему вы делаете 'new Double (x)'? Автобоксинг должен позаботиться об этом. –

+1

Почему вы создаете 'map' (и возвращаете его пустым), но вызываете put на' normalOutCurrVals'? –

ответ

1

Я думаю, вы хотите заполнить вашу карту!

private Map<Double, Byte> mapNormalOutCurrVals(){ 

Map map = new HashMap(); 
double x = 0.000; 
byte i = 0; 

//first set of normal output currents 
while (x <= 2.000){ 
    map.put(new Double(x), new Byte(i)); 
    x += 0.125; 
    i++; 
} 

while (x <= 4.000){ 
    map.put(new Double(x), new Byte(i)); 
    x += 0.250; 
    i++; 
} 

while (x <= 8.000){ 
    map.put(new Double(x), new Byte(i)); 
    x += 0.500; 
    i++; 
} 

return map; 
} 
Смежные вопросы