public class Agenda { // NOTA: para comprobar el correcto funcionamiento de la clase con el Corrector, // el nº de máximo de contactos que puede contener la agenda, C_P_D, es de 6. Por // favor, no lo modifiques si quieres evaluar tu clase Agenda con el Corrector. private Contacto[] elArray; private static final int C_P_D = 6; private int talla; public Agenda(){ this.elArray = new Contacto[C_P_D]; talla = 0; } public int getTalla(){ return talla; } // MétodoS auxiliarES de búsqueda del nombre de un contacto en una Agenda // ORDENADA ALFABÉTICAMENTE: // (1) Para inserción ORDENADA: Método buscarSecuencial, que obtiene la // posición del primer contacto en elrray[0..talla[ que sea MAYOR O // IGUAL que el de nombre dado -o SUCESOR de nombre- // IMPORTANTE: si el nombre dado resulta ser .... // a) MENOR o IGUAL que elArray[0], y por tanto menor que todos // los de elrray[1..talla[, el método devolverá 0 para advertir que // la posición de inserción/actualización del contacto de nombre dado // b) MAYOR que todos los de elrray[0..talla[, el método devolverá // talla para advertir que la posición de inserción del nuevo // contacto es, si cabe, la primera libre de elArray, i.e. talla int buscarSecuencial(String nombre){ /* Aquí empieza el método amado */ this.elArray = new Contacto[C_P_D]; int posMay = 0; if((nombre.compareTo(elArray[talla].getNombre())) < 0) return 0; /* Esta linea da el error */ else { for(;talla<elArray.length;talla++){ if(nombre.compareTo(elArray[talla].getNombre()) > 0){ posMay = talla; } } return posMay+1; } }
// MétodoS auxiliarES de búsqueda del nombre de un contacto en una Agenda // ORDENADA ALFABÉTICAMENTE: // (1) Para inserción ORDENADA: Método buscarSecuencial, que obtiene la // posición del primer contacto en elrray[0..talla[ que sea MAYOR O // IGUAL que el de nombre dado -o SUCESOR de nombre- // IMPORTANTE: si el nombre dado resulta ser .... // a) MENOR o IGUAL que elArray[0], y por tanto menor que todos // los de elrray[1..talla[, el método devolverá 0 para advertir que // la posición de inserción/actualización del contacto de nombre dado // es la 0 -MEJOR CASO DE LA BÚSQUEDA- // b) MAYOR que todos los de elrray[0..talla[, el método devolverá // talla para advertir que la posición de inserción del nuevo // contacto es, si cabe, la primera libre de elArray, i.e. talla // -PEOR CASO DE LA BÚSQUEDA-int buscarSecuencial(String nombre){ this.elArray = new Contacto[C_P_D]; elArray[0] = new Contacto("anselmo","612345678"); elArray[1] = new Contacto("avestruz","612345678"); elArray[2] = new Contacto("felipe","612345678"); elArray[3] = new Contacto("juana","612345678"); elArray[4] = new Contacto("juan","612345678"); elArray[5] = new Contacto("pepe","612345678"); int posMay = 0; boolean posMayTod = false; if(nombre.compareTo(elArray[0].getNombre())<=0) return 0; //esta línea para el caso a) else { for(;talla<elArray.length;talla++){ //esto para el caso b) if(nombre.compareTo(elArray[talla].getNombre()) > 0){ //caso b) posMayTod = true; //caso b) } //caso b) if(posMayTod) return talla; //caso b) } for(;talla<elArray.length;talla++){ //Obtiene la posición if(nombre.compareTo(elArray[talla].getNombre()) >= 0) //Obtiene la posición posMay = talla; //Obtiene la posición } //Obtiene la posición return posMay; //Obtiene la posición } }
Error de ejecución.java.lang.Exception: Error: el método buscarSecuencial devuelve una posición de inserción INcorrecta para un contacto nuevo. Por ejemplo, tras insertar el contacto de nombre Elisendo en la posición INcorrecta 0 te queda una agenda:====================Nombre: ElisendoTeléfono: 222222222====================Nombre: avestruzTeléfono: 612345678====================Nombre: felipeTeléfono: 612345678====================Sin embargo, la agenda correcta, donde se inserta en la posición CORRECTA 1, es:====================Nombre: ElisaTeléfono: 111111111====================Nombre: ElisendoTeléfono: 222222222====================Nombre: RobertoTeléfono: 000000000====================
haber si no entendí mal..pero quita el primer "for".. no le encuentro ningun sentido..el "for" de abajo hace el trabajo de ambos. me explixo??ahora.. debes poner dentro del "if" un return talla;porke el for no se detiene y posmay tenrá el valor del ultimo siempre
int buscarSecuencial(String nombre){ this.elArray = new Contacto[C_P_D]; elArray[0] = new Contacto("Anselmo","612345678"); elArray[1] = new Contacto("Avestruz","612345678"); elArray[2] = new Contacto("Felipe","612345678"); elArray[3] = new Contacto("Juana","612345678"); elArray[4] = new Contacto("Juan","612345678"); elArray[5] = new Contacto("Paco","612345678"); if(nombre.compareTo(elArray[0].getNombre())<=0) return 0; else { for(talla=0;talla<elArray.length;talla++){ if(nombre.compareTo(elArray[talla].getNombre()) < 0) return talla; } }return talla;}
Error de ejecución.java.lang.Exception: Error: el método buscarSecuencial devuelve una posición de inserción INcorrecta para un contacto nuevo. Por ejemplo, tras insertar el contacto de nombre Roberto en la posición INcorrecta 6 te queda una agenda:====================Nombre: AnselmoTeléfono: 612345678====================Nombre: AvestruzTeléfono: 612345678====================Nombre: FelipeTeléfono: 612345678====================Nombre: JuanaTeléfono: 612345678====================Nombre: JuanTeléfono: 612345678====================Nombre: PacoTeléfono: 612345678====================Sin embargo, la agenda correcta, donde se inserta en la posición CORRECTA 0, es:====================Nombre: RobertoTeléfono: 000000000====================***Hasta que no corrijas este error no se puede seguir evaluando tu ejercicio***Calificación: 0