Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Duda Java básico

Muy buenas, no consigo entender porque no funciona el siguiente código:


public class Test {

public static double[][] copiarMatrices(double[][] origen, double[][] destino) {

double[][] copiaDestino = new double[origen.length][origen[0].length];

for (int x = 0; x < origen.length; x++) {
for (int y = 0; y < origen[0].length; y++) {
copiaDestino[x][y] = origen[x][y];
}
}

return copiaDestino;

}

public static void main(String[] args) {

double[][] m = new double[][] { {10, 20, 30}, {40, 50, 60} };
double[][] m1 = copiarMatrices(m, m1);

for (int x = 0; x < m.length; x++)
for (int y = 0; y < m[0].length; y++)
System.out.print(m1[x][y]);

}
}

¿No puedo inicializar el Array m1 pasándole la referencia al método?

Muchas gracias, saludos.

mayo 3, 2012 | Unregistered Commenterredtitle

No es posible.
El objeto m1 del método no está aún creado cuando se usa como parámetro.
Esa línea se parece a un bucle infinito, excepto que el compilador lo detecta.

mayo 3, 2012 | Registered Commenterchoces

Muchas gracias, estaba convencido de que no se podía, solo puedo copiar un array si previamente está inicializado.

Gracias, un saludo

mayo 3, 2012 | Unregistered Commenterredtitle

Para evitar dudas, hay una diferencia entre crear e inicializar un array:

Crear:
int[] array = new int[1000];

Inicializar:
Arrays.fill(array, -1);

mayo 3, 2012 | Registered Commenterchoces