|
| arrayList problem Fra : bah |
Dato : 21-01-02 14:35 |
|
Hej! Jeg har et problem, som jeg håber der er nogen, der kan hjælpe mig med
det.
Jeg har en klasse Index(String name, int amount, int antal). Jeg har også
en klasse som initialisere en ArrayList. Jeg har en antal objekter af
klassen Index som skal beholdes i ArrayListen. Det hele går godt indtil jeg
skal hive disse Index objekter ud af ArrayListen. Alle indexerne bliver til
den sidste Index object jeg har puttet i ArrayListen, og det kan jeg ikke
forestå hvorfor?
Ex. Jeg ligger index1, index2 og index3 i ArrayListen, men når jeg får dem
ud, jeg får 3 gange index3'er.
kode:
Index index1= new Index("Emil",200,5);
myArray.a.add(entry1);// tilføjer index1 til ArrayListen a
Index index2= new Index("Tonny",300,4);
myArray.a.add(entry2);
Index index3= new Index("Mie",350,4);
myArray.a.add(entry3);
int i=0;
while (!myArray.a.isEmpty()){
index = (Index) myArray.a.get(i);
System.out.println(myArray.a.get(i).toString());
String name= index.getName();
int amount= index.getAmount();
int antal= index.getAntal();
i++;
}
---------------------
ouput:
Mie 350 4
Mie 350 4
Mie 350 4
antal elementer: 3
-----------------------
| |
Martin Ehmsen (21-01-2002)
| Kommentar Fra : Martin Ehmsen |
Dato : 21-01-02 15:14 |
|
bah wrote:
> Hej! Jeg har et problem, som jeg håber der er nogen, der kan hjælpe
mig med
> det.
> Jeg har en klasse Index(String name, int amount, int antal). Jeg har
også
> en klasse som initialisere en ArrayList. Jeg har en antal objekter af
> klassen Index som skal beholdes i ArrayListen. Det hele går godt
indtil jeg
> skal hive disse Index objekter ud af ArrayListen. Alle indexerne
bliver til
> den sidste Index object jeg har puttet i ArrayListen, og det kan jeg
ikke
> forestå hvorfor?
Jeg vil gætte på at problemet er at du et eller andet sted glemmer at
du har med referencer til objekter at gøre. Dvs. at du får alle tre
Index'er til at pege på samme stykke hukommelse.
Jeg kan godt nok ikke se der er noget galt med den kode du har sendt
med, men hvis du viser os noget mere (fx Index klassen) så er der
større chance for mere udførlig hjælp.
Mvh.
Martin Ehmsen
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson
| |
bah (21-01-2002)
| Kommentar Fra : bah |
Dato : 21-01-02 16:18 |
|
Jo, det kan jeg godt. Det er klassen Index:
public class Index{
private static String name=null;
private static int amount=0;
private static int antal=0;
public Index(String name,int amount,int antal){
this.name=name;
this.amount=amount;
this.antal=antal;
}//constructor
public String getName(){
return name;
}
public int getAmount(){
return amount;
}
public int getAntal(){
return interval;
}
public String toString(){
return getName().toString() + " " + Integer.toString(getAmount()) +
" " + Integer.toString(getAntal());
}
}//class ends
-------------------------
og i klassen MyArray har jeg:
public class MyArray {
static ArrayList a;
public MyArray() throws IOException {
a = new ArrayList();
}//constructor
..
..
..
}class ends
--------------------------------
| |
Martin Ehmsen (21-01-2002)
| Kommentar Fra : Martin Ehmsen |
Dato : 21-01-02 16:29 |
|
bah wrote:
> Jo, det kan jeg godt. Det er klassen Index:
>
> public class Index{
> private static String name=null;
> private static int amount=0;
> private static int antal=0;
Der er problemet, du bruger static variable
Dvs. for alle de instancer du opretter af Index klassen så vil der kun
findes en variabel med navn: name, amount og antal.
Dvs. når du opdatere dem så ændres de i alle klasseren.
Fjerne static og det vil virke...
Mvh.
Martin Ehmsen
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson
| |
bah (21-01-2002)
| Kommentar Fra : bah |
Dato : 21-01-02 17:11 |
|
Tusind tak, det virker nu
Mvh/ Emil
| |
|
|