2016-04-13 40 views
0

BU BİR DUPLICATE DEĞİLDİR. Yüzeyde olduğu gibi görünür, ancak diğer problemler için çözüm geçerli değildir. Ben Java 1.7 altında aşağıdaki yöntemi çalıştırdığınızdaJava Map.put() boş gösterici atıyor

, ben

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

bir boş gösterici istisna olsun ben dokümantasyon ve yakından ilişkili sorunlar için buraya cevapları okudum, ama şu ana kadar ve benim Takım güdük. Kaybettiğimiz belli bir şey var mı?

Sadece simüle edilmiş bir aygıtın belleğinde depolamak için bayt karşılıklarına eşleme (program kullanıcı arabirimimizde görünen) çift değerlerinden eşlemeleri yerleştirmek istiyoruz. Herhangi bir yardım büyük takdir

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

: Burada

importants bildirimleri bulunmaktadır.

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' nedir? Bu null mı? – Savior

+0

Neden yeni Double (x) 'yapıyorsun? Autoboxing bununla ilgilenmeli. –

+1

Neden bir 'map' oluşturuyorsunuz (ve boş bırakıyor), fakat 'normalOutCurrVals' öğesini çağırıyorsunuz? –

cevap

1

Sanırım haritanızı doldurmak istiyorsunuz!

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; 
}