PDA

View Full Version : [java] return di metodo


marpessio
15-07-2008, 11:23
Salve a tutti io in un metodo lavoro con una matrice del tipo String[][] e con una matrice del tipo int[][] come posso far ritornare al metodo entrambe....pensavo a un "contenitore" dove inserirle entrambe e poterle cosi ritornare....

grazie

k0nt3
15-07-2008, 11:30
si dovresti creare un contenitore, cioè un oggetto apposito che contiene tutte e due le matrici

vladix
15-07-2008, 11:44
potresti usare i generici ... ti crei un metodo + o - cosi ...

public <T> T[][] getMatrice(T param){

}


xo nn puoi usare gli int ma Integer

^TiGeRShArK^
15-07-2008, 12:30
:mbe:
ma perchè tutto ciò? :stordita:
gli array sono reference type, quindi quando vendono passati ad un metodo gli viene passata la copia del riferimento e quindi qualsiasi modifica effettuata sul contenuto degli array all'interno del metodo si ripercuote sulle matrici originali.
Tanto per fare un esempio:

public class Prova {

public Prova() {
int[][] matrix = new int[5][5];
String[][] matrixString = new String[5][5];
process(matrix, matrixString);
for (int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix.length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
System.out.println();
for (int i = 0; i < matrixString.length; i++) {
for(int j = 0; j < matrixString.length; j++) {
System.out.print(matrixString[i][j] + " ");
}
System.out.println();
}
}


private void process(int[][] matrix, String[][] matrixString) {
for (int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix.length; j++) {
matrix[i][j] = i + j;
matrixString[i][j] = String.valueOf(i + j);
}
}
}


public static void main(String[] args) {
new Prova();
}
}

Non ritorno nulla dal metodo, eppure le matrici anzichè essere vuote hanno questo contenuto:

0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8

0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8

quindi..
a che ti serve ritornare due cose se hai già quello che ti serve senza ritornare nulla? :fagiano:

k0nt3
15-07-2008, 12:33
in effetti non hai tutti i torti :p
però se gli array vengono creati dentro il metodo allora io userei un contenitore piuttosto che istanziare l'array fuori dal metodo e modificarlo dentro

marpessio
15-07-2008, 15:22
grazie mille ho risolto....