PDA

View Full Version : array dinamico in java


pinzi
30-03-2004, 16:46
Salve
nel seguente programma java ho realizzato una classe esempio che ha lo scopo di gestire un array dinamico. In pratica ogni volta che viene chiamato il metodo add l' array dovrebbe aumentare di un elemento.

//file esempio.java
class esempio{
public int[] i;
public int length;
esempio(int k){
i=new int[1];
i[0]=k;
length=1;
}
public void add(int k){
length=length+1;
int[] bubble;
bubble=i;
int[] i=new int[length];
for(int j=0;j<(length-2);j=j+1){
i[j]=bubble[j];
}
i[length-1]=k;

}
}

// file prova.java

class prova{

public static void main(String[] args){
esempio a=new esempio(1);
a.add(1);
System.out.println(a.i[0]);
a.add(1);
System.out.println(a.i[1]);
}
}

Il programma viene compilato corretamente tuttavia l'array non viene incrementato durante la chiamata del metodo add.
Dov'è il problema?

Angus
30-03-2004, 17:45
Originariamente inviato da pinzi
public void add(int k){
length=length+1;
int[] bubble;
bubble=i;



// errore:
int[] i=new int[length];


// dovrebbe essere:
// i=new int[length];




for(int j=0;j<(length-2);j=j+1){
i[j]=bubble[j];
}
i[length-1]=k;
}

anx721
30-03-2004, 17:46
Il problema è che dichiari nel metodo add una variabile locale che oscura il campo i:

int[] i=new int[length];

dovresti fare semplicemente

i=new int[length];