2010-03-04 2 views
6

Desidero memorizzare l'array restituito da un metodo in un altro array. Come posso fare questo?Come memorizzare un array restituito da un metodo in Java

public int[] method(){ 
    int z[] = {1,2,3,5}; 
    return z; 
} 

Quando chiamo questo metodo, come posso memorizzare la matrice restituita (z) in un altro array?

+0

Vuoi dire la copia della matrice, o semplicemente assegnando il risultato di questo metodo per una variabile in modo si può utilizzare? – extraneon

+0

Intendi aggiungere i risultati a un altro array? Come in, hai iniziato con foo = {9, 9, 9}, poi dopo aver chiamato il tuo metodo vuoi aggiungerli a foo in modo che foo diventi {9, 9, 9, 1, 2, 3, 5}? – Douglas

risposta

13
public int[] method() { 
    int z[] = {1,2,3,5}; 
    return z; 
} 

Il metodo sopra non restituisce un array par sé, ma restituisce un riferimento alla matrice. Nella funzione di chiamata è possibile raccogliere questo valore di ritorno in un altro di riferimento come:

int []copy = method(); 

Dopo questo copy sarà anche fare riferimento alla stessa matrice che z riferivo prima.

Se questo non è ciò che si desidera e si desidera creare una copia dell'array, è possibile creare una copia utilizzando System.arraycopy.

3
int[] x = method(); 
+0

Grazie mille int [] x = method(); ha funzionato perfettamente, grazie. –

4

int [] anotherArray = method();

Vuoi fare un'altra copia fisica della matrice?

Quindi utilizzare

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
+0

Perché non solo .clone()? – Ingo

0

Sei sicuro di avere a copia?

int[] myArray = method(); // now myArray can be used 
+1

chiedo se possiamo usare un ciclo for qui? –

1

Prova: -

int arr[]=mymethod(); 

//caling method it stores in array 

public int[] mymethod() 
{ 

    return arr; 

} 
+1

Benvenuti in Stackoverflow! Non è necessario duplicare altre risposte. Soprattutto su una domanda ha risposto 2 anni fa. –