Curso Java. Volumen XII: Utilización de Arrays como parámetros

Escrito por Adrián Crespo
Java
7

En el volumen anterior explicamos las nociones básicas de la declaración y creación de un array.

Se hizo un ejemplo a partir del cual os propusimos un ejercicio. En este volumen vamos a daros la solución del ejercicio propuesto y vamos a explicaros como utilizar los Arrays como parámetro en métodos

Vamos a empezar por lo tanto con la solución del ejercicio propuesto. Se propuso que utilizando como base el Array del ejemplo, se buscara el mayor y el menor número de esa lista.

Así es como quedaría la solución.

Arrays como parámetros

Se pueden pasar a un método parámetros del tipo array. Por ejemplo, aquí se pasa un array de enteros llamado lista:

public void método (int[] lista) {…}

Para que lo entendáis, que mejor que utilizar un ejemplo.

Vamos a crear una clase Persona, esta clase tendrá dos atributos privados, que serán la edad y el nombre de la misma. Al constructor se le pasará el nombre de la persona y la edad. Tendrá otros dos métodos más, uno que retornará la edad de la persona y otro que retornará su nombre.

Una vez programada la clase, quedará así:

Una vez implementada esta clase, implementaremos la clase ListaPersona, contendrá un método estático que buscará la edad mayor de las persona que contiene la lista. También crearemos un método main que creará un array de personas y llamara al método estático que tenemos. Así quedaría implementada la clase.

 Comentarios

Cuando tenemos perso[i] se trata de una Persona, por lo que podemos acceder a sus métodos

perso[i].edad();
perso[i].nombre();

Ejercicio opcional

Basándote en el ejemplo, crear otro método estático en la clase ListaPersonas que se llame BuscaPorNombre, retornará un booleano que será true si la ha encontrado y false si ha acabado de recorrerlo y no ha encontrado la coincidencia y se le pasará como parámetro un String con el nombre a buscar además de la lista de personas.

Nota

Para realizar la comparación utilizar la instrucción equals().

If ((perso[i].nombre()).equals(String)){…}

Hasta aquí el volumen XII. Al principio os podrá parecer un poco complicado pero una vez que lo entendáis luego es todo igual. Podría decirse que lo complicado es esto, después ya no tendréis dificultades. En el siguiente volumen acabaremos el tema de los Arrays y hablaremos sobre los Arrays multidimensionales (matrices) y sobre las tablas y listas de tamaño variable.


Continúa leyendo
  • Marcelo

    Que tal estuve corriendo el ejemplo el if


    if(perso[i].edad() > max){
    max = perso[i].edad();
    }

    Me da este error…


    Exception in thread “main” java.lang.NullPointerException
    at cursoredzone.ListaPersonas.edadMaxima

    Todo esta igual a lo que pasaron, si no me equivoco el error esta en la condicion. pero no entiendo que hacer para solucionarlo.

    Saludos.

    • como tienes la condicion del bucle? estas tratando de acceder de un elemento que no existe, por lo que parece que es la condición de permanencia del bucle la que esta mal.

      • Marcelo

        Efectivamente, cuando cree la lista por hacer copy paste a lista[3] y lista [4] les deje el indice en cero. Lo cambie y salio funcionando, gracias.

  • gerardo

    tengo dos problemas:el 1º problema es que en el ejemplo utiliza el this.edad y el this.nombre ¿que significa eso?; el 2º problema es que tengo problemas con el ejercicio opcional, le paso el codigo:

    public class Persona {

    private int edad;

    private String nombre;

    //Constructor

    public Persona(int edad, String nombre){

    this.edad=edad;

    this.nombre=nombre;

    }

    public int edad(){

    return edad;

    }

    public String nombre(){

    return nombre;

    }

    }

    public class ListaPersonas {

    public static boolean buscarPorNombre(Persona[] perso){

    int i=1;

    while(i< perso.length){

    If ((perso[i].nombre()).equals(String alvaro)){

    return true;

    }else{

    return false;

    }

    }

    }

    /**

    * @param args the command line arguments

    */

    public static void main(String[] args) {

    Persona [] lista = new Persona[5];

    lista[0]= new Persona[10,"Juan"];

    lista[1]= new Persona[14,"Pedro"];

    lista[2]= new Persona[18,"andres"];

    lista[3]= new Persona[8,"ana"];

    lista[4]= new Persona[13,"lucia"];

    // TODO code application logic here

    }

    }

  • Alberto

    e estado estudiando este curso y sabes hize tu mismo ejemplo del arrays pero me muestro un error en una inea de cod… mira System.out.println(“Edad Maxima: “+edadMaxima(lista)); no me la reconoce me mestra unerror k sera??

  • cc

    no me corre el codigo ayuda este es

    public class Persona {

    public static void main(String[] args)

    {

    Persona[] lista=new Persona[5];

    lista[0]=new Persona(10,”juan”);

    lista[1]=new Persona(14,”pedro”);

    lista[2]=new Persona(20,”luis”);

    lista[3]=new Persona(30,”carlos”);

    lista[4]=new Persona(40,”pepe”);

    System.out.println(“edad maxima: “+edadMaxima(lista));

    }

    private int edad;

    private String nombre;

    public Persona(int edad,String nombre)

    {

    this.edad=edad;

    this.nombre=nombre;

    }

    public int edad()

    {

    return edad;

    }

    public String nombre()

    {

    return nombre;

    }

    public class ListaPersonas

    {

    public int edadMaxima(Persona[] perso)

    {

    int max=perso[0].edad();

    int i=1;

    while(imax)

    {

    max=perso[i].edad();

    }

    i++;

    return max;

    }

    }

    }

  • cc

    necesito ayuda con esto quien me ayuda

    public class Persona {

    public static void main(String[] args)

    {

    Persona[] lista=new Persona[5];

    lista[0]=new Persona(10,”juan”);

    lista[1]=new Persona(14,”pedro”);

    lista[2]=new Persona(20,”luis”);

    lista[3]=new Persona(30,”carlos”);

    lista[4]=new Persona(40,”pepe”);

    System.out.println(“edad maxima: “+edadMaxima(lista));

    }

    private int edad;

    private String nombre;

    public Persona(int edad,String nombre)

    {

    this.edad=edad;

    this.nombre=nombre;

    }

    public int edad()

    {

    return edad;

    }

    public String nombre()

    {

    return nombre;

    }

    public class ListaPersonas

    {

    public int edadMaxima(Persona[] perso)

    {

    int max=perso[0].edad();

    int i=1;

    while(imax)

    {

    max=perso[i].edad();

    }

    i++;

    return max;

    }

    }

    }