Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Beginner Web en 20 Agosto 2019, 05:10 am



Título: vector como parametro, problemas
Publicado por: Beginner Web en 20 Agosto 2019, 05:10 am
Una pregunta porque puedo hacer esto

Código
  1. package ana;
  2.  
  3.  
  4. public class Prueba{
  5.  
  6. private static final int TAMAÑO = 10;
  7.  
  8. public static int[] cargarArreglo() {
  9. int[] arreglo = new int[TAMAÑO];
  10. for(int i = 0; i < arreglo.length; i++) {
  11. arreglo[i] = (int) (Math.random() * 10 + 1);
  12. }
  13. return arreglo;
  14. }
  15.  
  16. public static void mostrarArreglo(int arreglo[]) {
  17. for(int i = 0; i < arreglo.length; i++) {
  18. System.out.print(arreglo[i] + " ");
  19. }
  20. }
  21.  
  22. public static void main(String args[]) {
  23.  
  24. int[] vector = cargarArreglo();
  25. mostrarArreglo(vector);
  26.  
  27. }
  28. }

pero no esto??

Código
  1. package ana;
  2.  
  3.  
  4. public class Prueba{
  5.  
  6. private static final int TAMAÑO = 10;
  7.  
  8. public static void cargarArreglo(int arreglo[]) {
  9. arreglo = new int[TAMAÑO];
  10. for(int i = 0; i < arreglo.length; i++) {
  11. arreglo[i] = (int) (Math.random() * 10 + 1);
  12. }
  13. }
  14.  
  15. public static void mostrarArreglo(int arreglo[]) {
  16. for(int i = 0; i < arreglo.length; i++) {
  17. System.out.print(arreglo[i] + " ");
  18. }
  19. }
  20.  
  21. public static void main(String args[]) {
  22.  
  23. int[] vector;
  24. cargarArreglo(vector);
  25. mostrarArreglo(vector);
  26. }
  27. }

Por último, me parece a mi o tengo que inicializar si o si un vector antes de mandarlo como parametro? o.O  :huh:



Título: Re: vector como parametro, problemas
Publicado por: s0n1k en 20 Agosto 2019, 13:00 pm
cargarArreglo(int arreglo[]) -> cargarArreglo(int[] arreglo)

Y depende la clase del vector, si tiene default constructor en 0,0,0 no tienes por que iniciarlo.


Título: Re: vector como parametro, problemas
Publicado por: EdePC en 20 Agosto 2019, 16:56 pm
Saludos,

- Mi profesor de Java me dijo los siguiente acerca de este tema:

Citar
Declarar un Array lo único que hace es dejar un espacio para una variable en el Stack, pero todavía no habrá creado el Objeto, es decir, el Array propiamente dicho no estará creado.

Lo usual es int arr[]; o int []arr;

Luego tenemos que instanciar el Array, tenemos que hacerlo sino podremos trabajar con él, un Array que solo está declarado no nos permitirá trabajar. En este momento es cuando se construye el Objeto.

Para construir un Objeto en Java hay un proceso llamado "Instanciación de un Objeto", que es cuando se crea un Objeto partiendo de una Clase. Eso lo veremos con más detall en la Programación orientada a Objetos. En este caso estamos en el mismo escenario, hay que crear un Objeto de tipo Array y para instanciar o crear este Objeto hay que utilizar un Constructor:

arr[] = new int[5];

Con esta instrucción se crea un Objeto en el Heap, de momento vacio y con valores por defecto, pero ya es un Objeto que tiene espacio para almacenar 5 enteros.

También se puede declarar e instanciar un Array en una sola instrucción, el código más tipico es:

int arr[] = new int[5];

Nunca dejar los Array solo declarados porque no sirven para nada, hay que declararlos e instanciarlos y si se puede hacerlo en una sola instrución, pues más cómodo.

También está la otra forma de declarar un Array e instanciarlo con datos:

int arr[] = {1, 2, 3, 4, 5};

- Y como una propuesta de solución:

Código
  1. public class Prueba{
  2.  
  3.  private static final int TAMANO = 10;
  4.  
  5.  public static void cargarArreglo(int arreglo[]) {
  6.    //arreglo = new int[TAMANO]; // Esto crea otro Array y desecha el pasado como argumento
  7.    for(int i = 0; i < arreglo.length; i++) {
  8.      arreglo[i] = (int) (Math.random() * 10 + 1);
  9.    }
  10.  }
  11.  
  12.  public static void mostrarArreglo(int arreglo[]) {
  13.    for(int i = 0; i < arreglo.length; i++) {
  14.      System.out.print(arreglo[i] + " ");
  15.    }
  16.  }
  17.  
  18.  public static void main(String args[]) {
  19.  
  20.    int[] vector = new int[TAMANO];
  21.    cargarArreglo(vector);
  22.    mostrarArreglo(vector);
  23.  }
  24. }


Código
  1. C:\Users\EdSon\Desktop>java Prueba.java
  2. 7 1 4 7 5 10 10 1 8 2