Arraylist, Rekursivt kald & Overskrivelse
Jeg sidder nu og laver lidt komponenttest på et af mine rekursive kald. Kaldet som sådan virker fint nok, da den opretter det rigtige antal objekter, dog er der en lille hage ved det. Når jeg debugger ser det pt ud som den overskriver værdien i de tidligere oprettede objekters attributter. Dette sker dog kun i hashtables attributterne og ikke i hverken float eller int attributterne. Nogen der har en umiddelbar løsning.private static void genererKombination(int intArrayTaeller, Hashtable hatVarerAntal, Hashtable hatTilbudAntal, float floRabat, float floNormalPris){
int arrayTaeller = intArrayTaeller;
Hashtable tmpVarerAntal = new Hashtable();
Hashtable tmpTilbudAntal = new Hashtable();
if(floNormalPris <= floMaxvaerdi){
arlAlleKombinationer.add(new ent_Tilbudskombination((intKombinationsNr), floNormalPris, floRabat, hatVarerAntal, hatTilbudAntal));
while(arrayTaeller < arrStartTilbud.length){
genererKombination(arrayTaeller, laegHashSammen(hatVarerAntal, arrStartTilbud[arrayTaeller].getHatVarerAntal()), laegTilHash(hatTilbudAntal, arrStartTilbud[arrayTaeller].getIntTilbudsNr(), 1), (floRabat + arrStartTilbud[arrayTaeller].getFloRabat()), (floNormalPris + arrStartTilbud[arrayTaeller].getFloNormalpris()) );
arrayTaeller++;
}
}
}
private static Hashtable laegTilHash(Hashtable hatHashtable, int intKey, int intAntal)
{
if ( hatHashtable.containsKey((Object) ("" + intKey) ) ){
hatHashtable.put( ((Object) ("" + intKey)), (Object) ("" + ( (Integer.parseInt( (hatHashtable.get((Object) ("" + intKey)).toString())) + intAntal))));
}
else
{
hatHashtable.put( ((Object) ("" + intKey)), (Object) ("" + intAntal) );
}
return hatHashtable;
}
private static Hashtable laegHashSammen(Hashtable hatSummeringsHashtable, Hashtable hatAdderingsHashtable){
Enumeration enuAdderingsHashtable = hatAdderingsHashtable.keys();
while (enuAdderingsHashtable.hasMoreElements()){
Object tmpAdderingsObject = enuAdderingsHashtable.nextElement();
if (hatSummeringsHashtable.containsKey(tmpAdderingsObject)){
hatSummeringsHashtable.put(tmpAdderingsObject, (Object) ("" + (Integer.parseInt(hatSummeringsHashtable.get(tmpAdderingsObject).toString()) + Integer.parseInt(hatAdderingsHashtable.get(tmpAdderingsObject).toString()))));
}
else
{
hatSummeringsHashtable.put(tmpAdderingsObject, hatAdderingsHashtable.get(tmpAdderingsObject));
}
}
return hatSummeringsHashtable;
}
Hvis i har brug for mere kode må i sige til