Proyecto para programacion

Hola amigos, os cuento, estoy haciendo el módulo de grado superior de ASI (Administración de Sistemas Informáticos), weno más bien toy acabando el primer año, y en la asignatura de programación en Java el profesor nos ha mandado hacer un proyecto de varias clases (hacer un programa) utilizando arrays, objetos y herencia.
Como ando un poco perdido, sobretodo en arrays, me preguntaba si conoceis alguna página o si me podéis proporcionar algún código fuente de programas financieros, de gestiones, etc.
porque complicarte tanto con programas financieros excepto que deba ser sobre eso?. Porque no algo mas simple como una agenda con contactos, mensajes recordatorio, etc?. puedes utilizar todo lo que necesitas para hacerla.

saludos.
google code es tu amigo [risita]
Estoy haciendo una agenda de contactos, pero el problema es que viendo el código fuente de algunas que he visto por ahi, usan un método llamado iterator (en la clase Contacto) que no sé para que sirve, y no encuentro la forma tampoco de meter los contactos en un array, a ver si podeis hecharme un cable..
Saludos
DarkBoss17 escribió:Estoy haciendo una agenda de contactos, pero el problema es que viendo el código fuente de algunas que he visto por ahi, usan un método llamado iterator (en la clase Contacto) que no sé para que sirve, y no encuentro la forma tampoco de meter los contactos en un array, a ver si podeis hecharme un cable..
Saludos

http://chuwiki.chuidiang.org/index.php?title=Iterador
Los arrays son estáticos entonces tendrás problemas si quieres agregar contactos dinamicamente, deberías usar un vector y guardar los objetos de los contactos y en caso de querer crear un array utilizar la función "toArray()" y lo recorres con el iterator.

Ademas si quieres guardar los contactos para la siguiente ejecución tendrías que crear por lo menos un fichero XML. En caso de que no te importe perderlos lo de arriba es suficiente.

saludos.
(mensaje borrado)
Aun me acuerdo nosotros hicimos agenda en C y mas tarde en Java =)

Un programa de Gestion de Videoclub en JAVA (no nos dejaron acabarlo por falta de tiempo, me dio rabia xD)

Y luego hicimos 4 ejemplos tontos graficos con SWING y finalmente se nos pidio hacer un tres en raya con IA...
Mi tres en raya no pierde nunca XD (Menos mal que era un 3 en raya que si llega a ser un 4 en raya para darle IA [+risas] ).
Podrias hacer un simple ahorcado. Si solamente tienes que aplicar clases, arrays, herencia, etc. Es muy simple y dejaría las ideas especificadas.
klausus escribió:... se nos pidio hacer un tres en raya con IA...
Mi tres en raya no pierde nunca XD (Menos mal que era un 3 en raya que si llega a ser un 4 en raya para darle IA [+risas] ).

Bueno, eso te pasó porque especificaste la reacción en cada posible situación al ser un panel de tan solo 3x3, o eso se deduce del comentario, porque si recorres el array entero igual da 3 que 900 en ese sentido xD
Yo es que estaba haciendo una agenda de contactos pero visto que tengo que utilizar 4 clases (dos de ellas que heredan de la clase Padre y el main) paso de hacerlo porque me estoy rucando muchisimo xD.
Voy a ver si doy hecho un ahorcado utilizando herencia, arrays y objetos. Me podeis pasar algun ejemplo de alguno que veais por ahi ?? (sin ficheros ni archivos, es solamente para ejecutar desde el eclipse) esk me corre prisa el proyecto y ya le dedique bastante tiempo pa la agenda y al final na xD ;)

En la agenda necesito crear otras dos clases que deriven de la clase Contacto (Amigo y Familiar) y me da errores a la hora de heredar los atributos de la clase Padre a la hija, con lo cual no puedo crear el objeto Amigo ni inicializar sus atributos. ¿Sabeis como puedo solucionarlo?

Lo estoy haciendo así:

Clase Contacto (de la que quiero que hereden sus atributos otras dos subclases)
package AgendaDeEmpleados;
import java.util.*;////necesario para usar un ArrayList y guardar los contactos en el
public class Empleado {
static Scanner teclado = new Scanner(System.in);//declaramos el teclado para toda la clase
///////////////Atributos del Empleado
private String nombre = "";
private String apellidos = "";
private String dni = "";
private String numSS = "";
private String direccion = "";
private long telMovil;
private long telFijo;
private String email = "";
private int edad;
private double salario;

////////////Metodo para ver a todos los empleados de la agenda y visualizar sus atributos

public static void verEmpleados(ArrayList <Empleado> Contactos){
int i=0;

Iterator it = Contactos.iterator();//Metodo similar al for para recorrer el ArrayList Contactos

if (!it.hasNext()){///si la repetitiva no encuentra empleados en el ArrayList saca el correspondiente mensaje
System.out.println("|->La agenda está vacía<-|"+"\n");
}else{
while (it.hasNext()){///mientras haya empleados dentro del ArrayList, lo empieza a recorrer
it.next();//si existe un objeto Empleado en esta posicion del ArrayList, visualiza sus datos
System.out.println("\n------------------------------------------"+
"DNI: "+Contactos.get(i).dni+"\n"+
"Nombre: "+Contactos.get(i).nombre+"\n"+
"Apellidos: "+Contactos.get(i).apellidos+"\n"+
"Teléfono fijo: "+Contactos.get(i).telFijo+"\n"+
"Teléfono móvil: "+Contactos.get(i).telMovil+"\n"+
"Número de la Seguridad Social: "+Contactos.get(i).numSS+"\n"+
"Dirección: "+Contactos.get(i).direccion+"\n"+
"Email: "+Contactos.get(i).email+"\n"+
"Edad: "+Contactos.get(i).edad+"\n"+
"Salario: "+Contactos.get(i).salario+"\n"+
"------------------------------------------\n");
i++;//incrementa el indice de empleados
}//endwhile
}//endif
}

//////////////////////Método para construir al Empleado y guardarlo en un ArrayList

public static void añadirEmpleado(ArrayList <Empleado> Contactos){
Empleado empleado = new Empleado();//Construimos al Empleado y le damos valor a los atributos del mismo

System.out.println("Introduzca el DNI:");
empleado.dni = teclado.next();
System.out.println("\nIntroduzca el Nombre:");
empleado.nombre = teclado.next();
System.out.println("\nIntroduzca los Apellidos:");
empleado.apellidos = teclado.next();
System.out.println("\nIntroduzca el Teléfono móvil:");
empleado.telMovil = teclado.nextLong();
System.out.println("\nIntroduzca el Teléfono fijo:");
empleado.telFijo = teclado.nextLong();
System.out.println("\nIntroduzca el Email:");
empleado.email = teclado.next();
System.out.println("\nIntroduzca la Edad:");
empleado.edad = teclado.nextInt();
System.out.println("\nIntroduzca el Salario:");
empleado.salario = teclado.nextDouble();
System.out.println("\nIntroduzca el Número de la Seguridad Social:");
empleado.numSS = teclado.next();
System.out.println("\nIntroduzca la Dirección:");
empleado.direccion = teclado.next();

Contactos.add(empleado);//añade un empleado a un ArrayList(vector)
}

/////////////Metodo para buscar un empleado y visualizar sus atributos

public static void buscarEmpleado(ArrayList <Empleado> Contactos){
int i=0;//indice de Empleados
String DNI,NUMSS;

Iterator it = Contactos.iterator();

System.out.println("Introduzca DNI y el Número de la Seguridad Social de un Empleado:");
DNI = teclado.next();
NUMSS = teclado.next();
while(it.hasNext()){
it.next();
if((Contactos.get(i).dni.equals(DNI))&&(Contactos.get(i).numSS.equals(NUMSS))){
System.out.println("\n------------------------------------------"+
"DNI: "+Contactos.get(i).dni+"\n"+
"Nombre: "+Contactos.get(i).nombre+"\n"+
"Apellidos: "+Contactos.get(i).apellidos+"\n"+
"Teléfono fijo: "+Contactos.get(i).telFijo+"\n"+
"Teléfono móvil: "+Contactos.get(i).telMovil+"\n"+
"Número de la Seguridad Social: "+Contactos.get(i).numSS+"\n"+
"Dirección: "+Contactos.get(i).direccion+"\n"+
"Email: "+Contactos.get(i).email+"\n"+
"Edad: "+Contactos.get(i).edad+"\n"+
"Salario: "+Contactos.get(i).salario+"\n"+
"------------------------------------------\n");
}else{
System.out.println("\nNo existe ningún empleado con esos datos en la agenda");
}//endif
i++;
}//endwhile
}

//////////Metodo para buscar a un empleado por su DNI y numero de la seguridad social y borrarlo de la agenda

public static void borrarEmpleado(ArrayList <Empleado> Contactos){
int i=0;

System.out.println("Introduzca DNI y Número de la Seguridad que quiere borrar:");
String DNI = teclado.next();
String NUMSS = teclado.next();

Iterator it = Contactos.iterator();

while(it.hasNext()){
it.next();
if((Contactos.get(i).dni.equals(DNI))&&(Contactos.get(i).numSS.equals(NUMSS))){
System.out.println("\n------------------------------------------"+
"DNI: "+Contactos.get(i).dni+"\n"+
"Nombre: "+Contactos.get(i).nombre+"\n"+
"Apellidos: "+Contactos.get(i).apellidos+"\n"+
"Teléfono fijo: "+Contactos.get(i).telFijo+"\n"+
"Teléfono móvil: "+Contactos.get(i).telMovil+"\n"+
"Número de la Seguridad Social: "+Contactos.get(i).numSS+"\n"+
"Dirección: "+Contactos.get(i).direccion+"\n"+
"Email: "+Contactos.get(i).email+"\n"+
"Edad: "+Contactos.get(i).edad+"\n"+
"Salario: "+Contactos.get(i).salario+"\n"+
"------------------------------------------\n");

System.out.println("\n"+"¿Desea eliminarlo de la agenda?(S/N):");
String respuesta = teclado.next();

if((respuesta.equals("S"))||(respuesta.equals("SI"))||(respuesta.equals("s"))||(respuesta.equals("si"))||(respuesta.equals("sI"))||(respuesta.equals("Si"))){
it.remove();
break;
}//endif
}else{
System.out.println("\nNo existe ningún empleado con esos datos en la agenda");
}//endif
i++;
}//endwhile

}
}//class


Main

package AgendaDeEmpleados;
import java.util.*;
import java.util.Scanner;
public class AgendaApp {
static Scanner teclado = new Scanner(System.in);

/**
* @param args
*/

public static void main(String[] args){
ArrayList <Empleado> Contactos = new ArrayList <Empleado>();
char opc;

do{
verMenu();
System.out.println("\n¿Qué desea hacer?");
opc = teclado.next().charAt(0);
System.out.println("\n\n");

if(opc=='a'){
Empleado.añadirEmpleado(Contactos);
System.out.println("\n|->Añadiendo empleado a la agenda de contactos<-|");
}//endif opcion añadir un empleado a la agenda

if(opc=='b'){
Empleado.borrarEmpleado(Contactos);
System.out.println("\n|->Eliminando empleado de la agenda de contactos<-|");
}//endif opcion borrar a un empleado de la agenda

if(opc=='c'){
Empleado.buscarEmpleado(Contactos);
}//endif opcion buscar a un empleado de la agenda

if(opc=='d'){
Empleado.verEmpleados(Contactos);
}//endif opcion mostrar los empleados de la agenda
}while(opc!='s');
System.out.println("\n\t --CERRANDO AGENDA--");
}

//////////////Metodo para ver el menu

public static void verMenu(){
System.out.println("\n\n\t --AGENDA DE EMPLEADOS--"+
"\n\n\t--------------------------"+
"\n\t| a - Añadir Empleado |"+
"\n\t| b - Borrar Empleado |"+
"\n\t| c - Buscar Empleado |"+
"\n\t| d - Mostrar Empleados |"+
"\n\t| s - Salir |\n"+
"\t--------------------------");
}
}//class
DarkBoss17 escribió:En la agenda necesito crear otras dos clases que deriven de la clase Contacto (Amigo y Familiar) y me da errores a la hora de heredar los atributos de la clase Padre a la hija, con lo cual no puedo crear el objeto Amigo ni inicializar sus atributos. ¿Sabeis como puedo solucionarlo?

Si no pones las otras difícil decirte lo que falla.

Recuerda que si quieres crear una instancia de una hija, debe existir la de la padre.
Las otras subclases (Amigo y Familiar) heredarian los mismos atributos de la clase Contacto (clase Padre) y pondria los métodos de esta en las dos subclases, es que en un principio solo trabajaria con la clase Contacto y el main, por eso están puestos los métodos en la clase Contacto.

Pero el problema es que me da error de que no hay constructor de la clase Padre (cuando hago referencia del mismo en la de Amigo) y nose como hacerlo para meter los datos por teclado.

En la clase Contacto creo el constructor e incluso creo los metodos get y set de los atributos pero nose si hay algo más que hacer.

Aqui las tengo:

Adjuntos

JArl!!! Menudo lio tienes montado XD

A ver, por partes.

Lo primero, y si quieres programar mínimamente bien, hay ciertas reglas que hay que seguir:
-Los paquetes SIEMPRE EN MINÚSCULAS. En tu caso, agendadeempleados.
-Las variables EMPIEZAN SIEMPRE EN MINÚSCULAS. En tu caso ArrayList<Empleado> amigos.
-Prohibido usar variables con menos de 3 letras en el nombre (esto mucha gente se lo pasa por el forro de los webos, pero ayuda mucho para leer luego el código). Excepción ints para recorrer bucles.

Luego, y esto ya es menos importante, ayuda poner los nombres de las variables indicando de qué tipo son. Así, yo pondría listaAmigos o lAmigos para ese array list. Así siempre sabes de un vistazo que esa variable es una lista.

Lo segundo:
Un Iterator es un objeto auxiliar para recorrer ciertos tipos de contenedores de datos. Pero es un puto coñazo trabajar con Iterators por lo que evitalos siempre que sea posible (dentro de lo razonable, tampoco escribas 20 lineas extra de código por ahorrarte un Iterator).

Pero bueno, si quieres usarlo, lo que deberías hacer es

public static void verEmpleados (ArrayList<Empleado> amigos) {
  Iterator iterator = amigos.iterator();
  if (!iterator.hasNext()){
    System.out.... //blablabla agenda vacia
  }
  Empleado empleado = null; //Pones esto aqui en vez de dentro del while
                                      //porque es un uso más eficiente de memoria
                                      //ya que no creas un nuevo objeto en cada iteracion
  while (iterator.hasNext()) {
    empleado = iterator.next(); //OJO!! Si usas un iterator YA NO USES EL ARRAYLIST
    System.out... //Blablabla
  }
}


Ahora, lo que yo haría:
public static void verEmpleados (ArrayList<Empleado> amigos) {
  Empleado empleado = null;
  for (int i = 0; i < amigos.size(); i++) {
    empleado = amigos.get(i);
    System.out... //blablabla
  }

}


Y ahora después del coñazo este que te he soltado, vamos a tu problema. El problema es que los campos nombre, apellidos, etc LOS HAS DECLARADO PRIVATE. Esto evita que se pueda acceder a ellos desde fuera de la propia clase Empleado. Pero OJO! Están bien declarados como private! Lo que te falta es crear métodos get y set para esos campos.

Un método set tiene la siguiente pinta:

public void setNombre(String nombre) {
this.nombre = nombre;
}

y un get es

public String getNombre() {
return this.nombre;
}

El propio eclipse muy amablemente te genera esos métodos automáticamente. Te vas a Source -> Generate Getters and Setters, elijes los campos para los que quieres crear los métodos y a correr :)

Y luego en tu clase Amigo, en el system.out.println tienes que poner
amigos.get(i).getNombre()

La otra (mala) opción es poner los campos como public. Pero eso permite que cualquiera toque esos campos sin tu permiso (permiso = usar el método set que tu les das). En tu caso el método set es muy sencillo, pero en otros casos puedes incluir ahí validaciones de datos y otras operaciones.

Por cierto, la gracia de la herencia es que los hijos siempre tienen todo lo de los padres Y ALGO MÁS :P Ponle algún campo más a la clase Amigo. Algo en plan "nick" o "meDebePasta" :P

Así, la clase Amigo tendrá todos los campos de Empleado (nombre, apellido, etc) más los suyos propios. Sino no tiene mucho sentido usar herencia :P


EDIT: Otra cosa. El contructor de la clase empleado no tiene mucho sentido. Le estás pasando un montón de argumentos que NO usas porque los lees del teclado.

Lo suyo en este caso sería que no pusieras constructor (cuando no pones, se usa el de por defecto) y que para crear un Empleado hicieses:

Empleado emp = new Empleado();
System.out.println("Mete el nombre:");
emp.setNombre(teclado.next());
System.out.println("Mete los apellidos:");
emp.setApellidos(teclado.next());
...

Así no te dará error cuando hagas Amigo amigo = new Amigo();

Otra cosa es que quieras usar el constructor para hacer los sets. Entonces la cosa sería:

String nombre = teclado.next();
String apellidos = teclado.next();
...
Empleado emp = new Empleado(nombre, apellidos,...);
Pero si lo haces así QUITA LOS teclado.next de la clase Empleado!!!

En este segundo caso SI haría falta crear un constructor de la clase Amigo en el que llames al constructor del padre.

public Amigo(boolean meDebePasta, String nombre, String apellidos...) {
  super(nombre, apellidos,...);
  //y aquí debajo metes los campos que sean solo de Amigo. Por ejemplo:
  this.meDebePasta = meDebePasta;
}
DarkBoss17 escribió:Las otras subclases (Amigo y Familiar) heredarian los mismos atributos de la clase Contacto (clase Padre) y pondria los métodos de esta en las dos subclases, es que en un principio solo trabajaria con la clase Contacto y el main, por eso están puestos los métodos en la clase Contacto.

Pero el problema es que me da error de que no hay constructor de la clase Padre (cuando hago referencia del mismo en la de Amigo) y nose como hacerlo para meter los datos por teclado.

En la clase Contacto creo el constructor e incluso creo los metodos get y set de los atributos pero nose si hay algo más que hacer.

Aqui las tengo:



Como es tu árbol de clases?

+Empleados
|
|-->Amigos


El constructor de empleados no tiene mucho sentido debería de ser algo así, o por lo menos, no le veo el sentido...

public Empleado(String nombre,String apellidos,String direccion,long telMovil,long telFijo,String email){
       this.nombre = nombre;
       this.apellidos = apellidos;
       this.direccion= direccion;
       this.telMovil= telMovil;
       this.telFijo= telFijo;
       this.email= email;
}



Pero yo optaría por un constructor sin parámetros y cambiarlos con sets y gets.

public Empleado() {}

public getNombre(){
      return this.nombre;
}

public void setNombre(String nombre){
      this.nombre = nombre;
}



Entonces el constructor de amigos cambiaría, el super solo lo utilizas cuando quieres llamar a un constructor del padre, en caso de que tengas algún constructor especial en esa clase. Y heredas los sets y gets.

public Amigo() {}

-------
Amigo amigo1 = new Amigo();

amigo1.setNombre('Pedro');
String nombre = amigo1.getNombre();



Por ultimo el objetivo de las subclases es agregar algo a la clase , ejemplo, si tienes la clase ANIMAL no puedes ponerle como atributo que tiene "patas", ya que los pese no las tiene y son animales, entonces creas una subclase para cubrir a los animales con patas.

En tu caso yo lo estructuraría como

+Contactos(con los atributos genéricos que ya tienes, mas los métodos genéricos que tendrán todos los contactos)
|
|-> Amigos (que hereda todo y puedes agregarle alguna tributo como... "valor" en el que puntúas la calidad de tu amigo del 1 al 10 pro decir algo)
|-> Familia (hereda y le haces lo miso agregas algo como "parentesco", ejemplo primo, padre, etc.)
|-> Empleado (hereda y atributo tipo "puesto" ejemplo, analista, programador, etc.)

También recuerda agrega a cada respectiva clase los métodos propios que no tengan todos los contactos.

saludos.

EDITO: redscare me ha ganado de mano.
redscare escribió:JArl!!! Menudo lio tienes montado XD

A ver, por partes.

Lo primero, y si quieres programar mínimamente bien, hay ciertas reglas que hay que seguir:
-Los paquetes SIEMPRE EN MINÚSCULAS. En tu caso, agendadeempleados.
-Las variables EMPIEZAN SIEMPRE EN MINÚSCULAS. En tu caso ArrayList<Empleado> amigos.
-Prohibido usar variables con menos de 3 letras en el nombre (esto mucha gente se lo pasa por el forro de los webos, pero ayuda mucho para leer luego el código). Excepción ints para recorrer bucles.

Luego, y esto ya es menos importante, ayuda poner los nombres de las variables indicando de qué tipo son. Así, yo pondría listaAmigos o lAmigos para ese array list. Así siempre sabes de un vistazo que esa variable es una lista.

Lo segundo:
Un Iterator es un objeto auxiliar para recorrer ciertos tipos de contenedores de datos. Pero es un puto coñazo trabajar con Iterators por lo que evitalos siempre que sea posible (dentro de lo razonable, tampoco escribas 20 lineas extra de código por ahorrarte un Iterator).

Pero bueno, si quieres usarlo, lo que deberías hacer es

public static void verEmpleados (ArrayList<Empleado> amigos) {
  Iterator iterator = amigos.iterator();
  if (!iterator.hasNext()){
    System.out.... //blablabla agenda vacia
  }
  Empleado empleado = null; //Pones esto aqui en vez de dentro del while
                                      //porque es un uso más eficiente de memoria
                                      //ya que no creas un nuevo objeto en cada iteracion
  while (iterator.hasNext()) {
    empleado = iterator.next(); //OJO!! Si usas un iterator YA NO USES EL ARRAYLIST
    System.out... //Blablabla
  }
}


Ahora, lo que yo haría:
public static void verEmpleados (ArrayList<Empleado> amigos) {
  Empleado empleado = null;
  for (int i = 0; i < amigos.size(); i++) {
    empleado = amigos.get(i);
    System.out... //blablabla
  }

}


Y ahora después del coñazo este que te he soltado, vamos a tu problema. El problema es que los campos nombre, apellidos, etc LOS HAS DECLARADO PRIVATE. Esto evita que se pueda acceder a ellos desde fuera de la propia clase Empleado. Pero OJO! Están bien declarados como private! Lo que te falta es crear métodos get y set para esos campos.

Un método set tiene la siguiente pinta:

public void setNombre(String nombre) {
this.nombre = nombre;
}

y un get es

public String getNombre() {
return this.nombre;
}

El propio eclipse muy amablemente te genera esos métodos automáticamente. Te vas a Source -> Generate Getters and Setters, elijes los campos para los que quieres crear los métodos y a correr :)

Y luego en tu clase Amigo, en el system.out.println tienes que poner
amigos.get(i).getNombre()

La otra (mala) opción es poner los campos como public. Pero eso permite que cualquiera toque esos campos sin tu permiso (permiso = usar el método set que tu les das). En tu caso el método set es muy sencillo, pero en otros casos puedes incluir ahí validaciones de datos y otras operaciones.

Por cierto, la gracia de la herencia es que los hijos siempre tienen todo lo de los padres Y ALGO MÁS :P Ponle algún campo más a la clase Amigo. Algo en plan "nick" o "meDebePasta" :P

Así, la clase Amigo tendrá todos los campos de Empleado (nombre, apellido, etc) más los suyos propios. Sino no tiene mucho sentido usar herencia :P


EDIT: Otra cosa. El contructor de la clase empleado no tiene mucho sentido. Le estás pasando un montón de argumentos que NO usas porque los lees del teclado.

Lo suyo en este caso sería que no pusieras constructor (cuando no pones, se usa el de por defecto) y que para crear un Empleado hicieses:

Empleado emp = new Empleado();
System.out.println("Mete el nombre:");
emp.setNombre(teclado.next());
System.out.println("Mete los apellidos:");
emp.setApellidos(teclado.next());
...

Así no te dará error cuando hagas Amigo amigo = new Amigo();

Otra cosa es que quieras usar el constructor para hacer los sets. Entonces la cosa sería:

String nombre = teclado.next();
String apellidos = teclado.next();
...
Empleado emp = new Empleado(nombre, apellidos,...);
Pero si lo haces así QUITA LOS teclado.next de la clase Empleado!!!

En este segundo caso SI haría falta crear un constructor de la clase Amigo en el que llames al constructor del padre.

public Amigo(boolean meDebePasta, String nombre, String apellidos...) {
  super(nombre, apellidos,...);
  //y aquí debajo metes los campos que sean solo de Amigo. Por ejemplo:
  this.meDebePasta = meDebePasta;
}


chapó tio!! vaya crack! jaja muchas gracias! ;)

Sólo una última cosa, te muestro las clases Contacto y Amigo para ver un problema que me queda por solucionar:

Clase padre Contacto:

package agendadecontactos;
public class Contacto {

//////////////////Atributos del objeto Contacto

private String nombre,apellidos,direccion,email;
private long telMovil,telFijo;

///////////////Constructor del objeto Contacto

public Contacto(String nombre,String apellidos,String direccion,String email,long telMovil,long telFijo){
this.nombre = nombre;
this.apellidos = apellidos;
this.direccion = direccion;
this.email = email;
this.telMovil = telMovil;
this.telFijo = telFijo;
}

/////////////////Metodos getter y setter

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public long getTelFijo() {
return telFijo;
}

public void setTelFijo(long telFijo) {
this.telFijo = telFijo;
}

public long getTelMovil() {
return telMovil;
}

public void setTelMovil(long telMovil) {
this.telMovil = telMovil;
}
}//class


Subclase Amigo:

package agendadecontactos;
import java.util.*;//necesario para guardar los Amigos en un ArrayList "amigos"
import java.util.Scanner;//creamos el teclado
public class Amigo extends Contacto{
static Scanner teclado = new Scanner(System.in);//declaramos el teclado para toda la clase
/////////////////Atributos del objeto Amigo

private int edad;
private String cumpleaños;

////////////////Constructor del objeto Amigo

Amigo(String nombre,String apellidos,String direccion,String email,long telMovil,long telFijo,int edad,String cumpleaños){
super(nombre,apellidos,direccion,email,telMovil,telFijo);
this.edad = edad;
this.cumpleaños = cumpleaños;
}

//////////////Metodos getter y setter

public String getCumpleaños() {
return cumpleaños;
}

public void setCumpleaños(String cumpleaños) {
this.cumpleaños = cumpleaños;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

////////////Metodo para ver a todos los Amigos de la agenda y visualizar sus atributos

public static void verAmigos(ArrayList <Amigo> amigos){
int i=0;

Iterator it = amigos.iterator();//Metodo similar al for para recorrer el ArrayList Contactos

if (!it.hasNext()){///si la repetitiva no encuentra contactos en el ArrayList saca el correspondiente mensaje
System.out.println("|->La agenda de amigos está vacía<-|"+"\n");
}else{
while (it.hasNext()){///mientras haya empleados dentro del ArrayList, lo empieza a recorrer
it.next();//si existe un objeto Contacto en esta posicion del ArrayList, visualiza sus datos
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getCumpleaños()+"\n"+
"------------------------------------------\n");
i++;//incrementa el indice de contactos
}//endwhile
}//endif
}

//////////////////////Método para construir al Amigo y guardarlo en un ArrayList

public static void añadirAmigo(ArrayList <Amigo> amigos){
Amigo amigo = new Amigo();//Construimos el objeto Amigo y le damos valor a los atributos del mismo

System.out.println("\nIntroduzca el Nombre:");
amigo.setNombre(teclado.next());
System.out.println("\nIntroduzca los Apellidos:");
amigo.setApellidos(teclado.next());
System.out.println("\nIntroduzca el Teléfono fijo:");
amigo.setTelFijo(teclado.nextLong());
System.out.println("\nIntroduzca el Teléfono móvil:");
amigo.setTelMovil(teclado.nextLong());
System.out.println("\nIntroduzca la Dirección:");
amigo.setDireccion(teclado.next());
System.out.println("\nIntroduzca el Email:");
amigo.setEmail(teclado.next());
System.out.println("\nIntroduzca la Edad:");
amigo.setEdad(teclado.nextInt());
System.out.println("\nIntroduzca la fecha de Cumpleaños:");
amigo.setCumpleaños(teclado.next());

amigos.add(amigo);//añade un amigo(Contacto) a un ArrayList
}

/////////////Metodo para buscar un empleado y visualizar sus atributos

public static void buscarEmpleado(ArrayList <Amigo> amigos){
int i=0;//indice de Contactos

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();
while(it.hasNext()){
it.next();
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getCumpleaños()+"\n"+
"------------------------------------------\n");
}else{
System.out.println("\nNo existe ningún amigo con esos datos en la agenda");
}//endif
i++;
}//endwhile
}

//////////Metodo para buscar a un amigo por su correo electrónico y borrarlo de la agenda

public static void borrarAmigo(ArrayList <Amigo> amigos){
int i=0;

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();

while(it.hasNext()){
it.next();
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getCumpleaños()+"\n"+
"------------------------------------------\n");

System.out.println("\n"+"¿Desea eliminarlo de la agenda?(S/N):");
String respuesta = teclado.next();

if((respuesta.equals("S"))||(respuesta.equals("SI"))||(respuesta.equals("s"))||(respuesta.equals("si"))||(respuesta.equals("sI"))||(respuesta.equals("Si"))){
it.remove();
break;
}//endif
}else{
System.out.println("\nNo existe ningún amigo con esos datos en la agenda");
}//endif
i++;
}//endwhile
}
}//class


El único problema es que en la subclase Amigo me da error en el constructor "Amigo amigo = new Amigo()", ¿cómo podría solucionarlo?, es que tu dices que es mejor quitar el constructor de la de Contacto para solucionar le problema, pero si hago eso entonces me falla toda la clase Amigo, porque esta hereda todo lo de la clase Contacto, es decir, necesita su constructor.
A ver, el tema está en como funcionan los constructores.

-Si en tu clase Amigo no pones ningún constructor, java internamente te va a crear un constructor por defecto para que puedas hacer new Amigo(). Este constructor por defecto es exactamente lo mismo que si tu coges y pones

public Amigo() {
//aquí no hay nada. Los campos no se inicializan, habrá que hacerlo con los métodos set.
}

-En el momento que tu defines tu propio constructor, éste sustituye al constructor por defecto. Por lo tanto si tu defines un

public Amigo (String nombre, String apellidos...) {
super(nombre, apellidos...);
this.cumpleanos = cumpleanos;
...
}

Ya NO EXISTE ningún constructor que no tenga argumentos de entrada. No hay ningun método "public Amigo()".


Básicamente aquí hay dos opciones.
a)No poner constructor (para que se use el de por defecto) y rellenar los campos del con los sets
Amigo amigo = new Amigo();
amigo.setNombre("paco");
amigo.setApellidos("porras");
...

b)Dejar el constructor que ya tienes... y usarlo, claro XD
Amigo amigo = new Amigo("paco", "porras", ...);

Que se recomienda? La teoría dice que los métodos no deben tener nunca más de 7 argumentos de entrada. Si son 7 o menos -> constructor como el que tienes. Si son más de 7 -> constructor vacio y se rellena con los sets. El motivo de esto es que es jodidamente fácil que alguien meta la zarpa y te cambie el ORDEN de los argumentos. Y si da la casualidad de que cambia el orden de dos argumentos del mismo tipo (dos Strings, por ejemplo) puedes acabar con un "porras paco" en vez del "paco porras" que querías crear. Cuando son pocos argumentos, es fácil darse cuenta. Cuando son 30 estás jodido.

Y aunque en este caso tan sencillo es un poco absurdo, nada te impide tener 2, 3, o 14 constructores diferentes. Puedes tener varios y usar el que más te interese en cada momento.

Por último, y a riesgo de ser un pesao, estás usando mal el iterator. Si quieres recorrer el ArrayList con un indice, usa

for(int i=0; i<listaAmigos.size(); i++) {
Amigo amigo = listaAmigos.get(i);
}

Si quieres usar un iterator usa

while(ite.hasNext()){
Amigo amigo = ite.next();
}

Lo que estás haciendo es una mezcla muy rara (que funciona, no digo que no) de las dos cosas que cualquiera que lo vea va a decir "aaaaaaaaaaaaah!! mis ojoooooooooooooos!!!" :P

De todas formas ya te digo que los Iterators solo se usan cuando no te quedan más webos, es decir, para recorrer objetos más "raros" (en el sentido de que se usan menos a menudo) como un Enumeration que no se pueden recorrer bien con un índice. Para listas, mejor usar el "for" junto al .get(i) El principal motivo de esto es que con los iterators no puedes volver atrás, ni jugar a comparar un objeto con el siguiente de la lista ni nada. Con los get(i) puedes hacer cosas como

if(lista.get(i).getTlf() == lista.get(i+1).getTlf(){ //hago algo }

Que en este caso no tiene utilidad ninguna, pero a veces hace falta, y con un iterator no puedes hacerlo de forma fácil.
Bueno ahora me da error en el main, cuando añado un Amigo la cosa va bien pero cuando añado el segundo me sale algun error en la parte de introducir un Telefono movil, telefono fijo, etc...
Clase Contacto:

package agendadecontactos;
import java.util.Scanner;
public class Contacto {
static Scanner teclado = new Scanner(System.in);

//////////////////Atributos del objeto Contacto

protected String nombre,apellidos,direccion,email;
protected long telMovil,telFijo;

/////////////////Metodos getter y setter

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public long getTelFijo() {
return telFijo;
}

public void setTelFijo(long telFijo) {
this.telFijo = telFijo;
}

public long getTelMovil() {
return telMovil;
}

public void setTelMovil(long telMovil) {
this.telMovil = telMovil;
}
}//class


Clase Amigo:

package agendadecontactos;
import java.util.*;//necesario para guardar los Amigos en un ArrayList "amigos"
public class Amigo extends Contacto{
static Scanner teclado = new Scanner(System.in);//declaramos el teclado para toda la clase
/////////////////Atributos del objeto Amigo

protected int edad;
protected String fechaNacimiento;

/////////////Metodos getter y setter

public String getFechaNacimiento() {
return fechaNacimiento;
}

public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

////////////Metodo para ver a todos los Amigos de la agenda y visualizar sus atributos

public static void verAmigos(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();//para controlar si hay contactos o no en el ArrayList 'amigos'

if(!it.hasNext()){//si no hay contactos, muestra el correspondiente mensaje
System.out.println("\n|->La agenda está vacía<-|");
}else{
for(int i=0;i<amigos.size();i++){//si los hay los muestra recorriendo el ArrayList 'amigos'
System.out.println("\n------------------------------------------\n"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");
}//for
}//endif
}

//////////////////////Método para construir al Amigo y guardarlo en un ArrayList 'amigos'

public static void añadirAmigo(ArrayList <Amigo> amigos){
Amigo amigo = new Amigo();//Construimos el objeto Amigo y le damos valor a los atributos del mismo

System.out.println("\nIntroduzca el Nombre:");
amigo.setNombre(teclado.next());
System.out.println("\nIntroduzca los Apellidos:");
amigo.setApellidos(teclado.next());
System.out.println("\nIntroduzca el Teléfono fijo:");
amigo.setTelFijo(teclado.nextLong());
System.out.println("\nIntroduzca el Teléfono móvil:");
amigo.setTelMovil(teclado.nextLong());
System.out.println("\nIntroduzca la Dirección:");
amigo.setDireccion(teclado.next());
System.out.println("\nIntroduzca el Email:");
amigo.setEmail(teclado.next());
System.out.println("\nIntroduzca la Edad:");
amigo.setEdad(teclado.nextInt());
System.out.println("\nIntroduzca la fecha de Nacimiento:");
amigo.setFechaNacimiento(teclado.next());

amigos.add(amigo);//añade un amigo(Contacto) al ArrayList 'amigos'
}

/////////////Metodo para buscar un amigo en el ArrayList 'amigos' y visualizar sus atributos

public static void buscarAmigo(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();

while(it.hasNext()){//mientras tengamos contactos en el ArrayList 'amigos'
for(int i=0;i<amigos.size();i++){
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");
}else{
System.out.println("\nNo existe ningún amigo con ese correo electrónico en la agenda");
}//endif
i++;
}//for
}//endwhile
System.out.println("\n|->La agenda está vacía<-|");
}

//////////Metodo para buscar a un amigo por su correo electrónico y borrarlo del ArrayList 'amigos'(agenda)

public static void borrarAmigo(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();

while(it.hasNext()){
for(int i=0;i<amigos.size();i++){
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");

System.out.println("\n"+"¿Desea eliminarlo de la agenda?(S/N):");
String respuesta = teclado.next();

if((respuesta.equals("S"))||(respuesta.equals("SI"))||(respuesta.equals("s"))||(respuesta.equals("si"))||(respuesta.equals("sI"))||(respuesta.equals("Si"))){
it.remove();
break;
}//endif
}else{
System.out.println("\nNo existe ningún amigo con ese correo electrónico en la agenda");
}//endif
}//for
}//endwhile
System.out.println("\n|->La agenda está vacía<-|");
}
}//class
DarkBoss17 escribió:Bueno ahora me da error en el main, cuando añado un Amigo la cosa va bien pero cuando añado el segundo me sale algun error en la parte de introducir un Telefono movil, telefono fijo, etc...
Clase Contacto:

package agendadecontactos;
import java.util.Scanner;
public class Contacto {
static Scanner teclado = new Scanner(System.in);

//////////////////Atributos del objeto Contacto

protected String nombre,apellidos,direccion,email;
protected long telMovil,telFijo;

/////////////////Metodos getter y setter

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public long getTelFijo() {
return telFijo;
}

public void setTelFijo(long telFijo) {
this.telFijo = telFijo;
}

public long getTelMovil() {
return telMovil;
}

public void setTelMovil(long telMovil) {
this.telMovil = telMovil;
}
}//class


Clase Amigo:

package agendadecontactos;
import java.util.*;//necesario para guardar los Amigos en un ArrayList "amigos"
public class Amigo extends Contacto{
static Scanner teclado = new Scanner(System.in);//declaramos el teclado para toda la clase
/////////////////Atributos del objeto Amigo

protected int edad;
protected String fechaNacimiento;

/////////////Metodos getter y setter

public String getFechaNacimiento() {
return fechaNacimiento;
}

public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

////////////Metodo para ver a todos los Amigos de la agenda y visualizar sus atributos

public static void verAmigos(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();//para controlar si hay contactos o no en el ArrayList 'amigos'

if(!it.hasNext()){//si no hay contactos, muestra el correspondiente mensaje
System.out.println("\n|->La agenda está vacía<-|");
}else{
for(int i=0;i<amigos.size();i++){//si los hay los muestra recorriendo el ArrayList 'amigos'
System.out.println("\n------------------------------------------\n"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");
}//for
}//endif
}

//////////////////////Método para construir al Amigo y guardarlo en un ArrayList 'amigos'

public static void añadirAmigo(ArrayList <Amigo> amigos){
Amigo amigo = new Amigo();//Construimos el objeto Amigo y le damos valor a los atributos del mismo

System.out.println("\nIntroduzca el Nombre:");
amigo.setNombre(teclado.next());
System.out.println("\nIntroduzca los Apellidos:");
amigo.setApellidos(teclado.next());
System.out.println("\nIntroduzca el Teléfono fijo:");
amigo.setTelFijo(teclado.nextLong());
System.out.println("\nIntroduzca el Teléfono móvil:");
amigo.setTelMovil(teclado.nextLong());
System.out.println("\nIntroduzca la Dirección:");
amigo.setDireccion(teclado.next());
System.out.println("\nIntroduzca el Email:");
amigo.setEmail(teclado.next());
System.out.println("\nIntroduzca la Edad:");
amigo.setEdad(teclado.nextInt());
System.out.println("\nIntroduzca la fecha de Nacimiento:");
amigo.setFechaNacimiento(teclado.next());

amigos.add(amigo);//añade un amigo(Contacto) al ArrayList 'amigos'
}

/////////////Metodo para buscar un amigo en el ArrayList 'amigos' y visualizar sus atributos

public static void buscarAmigo(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();

while(it.hasNext()){//mientras tengamos contactos en el ArrayList 'amigos'
for(int i=0;i<amigos.size();i++){
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");
}else{
System.out.println("\nNo existe ningún amigo con ese correo electrónico en la agenda");
}//endif
i++;
}//for
}//endwhile
System.out.println("\n|->La agenda está vacía<-|");
}

//////////Metodo para buscar a un amigo por su correo electrónico y borrarlo del ArrayList 'amigos'(agenda)

public static void borrarAmigo(ArrayList <Amigo> amigos){

Iterator it = amigos.iterator();

System.out.println("Introduzca el correo electrónico del amigo que desea buscar:");
String correoE = teclado.next();

while(it.hasNext()){
for(int i=0;i<amigos.size();i++){
if(amigos.get(i).getEmail().equals(correoE)){
System.out.println("\n------------------------------------------"+
"Nombre: "+amigos.get(i).getNombre()+"\n"+
"Apellidos: "+amigos.get(i).getApellidos()+"\n"+
"Teléfono fijo: "+amigos.get(i).getTelFijo()+"\n"+
"Teléfono móvil: "+amigos.get(i).getTelMovil()+"\n"+
"Dirección: "+amigos.get(i).getDireccion()+"\n"+
"Email: "+amigos.get(i).getEmail()+"\n"+
"Edad: "+amigos.get(i).getEdad()+"\n"+
"Cumpleaños: "+amigos.get(i).getFechaNacimiento()+"\n"+
"------------------------------------------\n");

System.out.println("\n"+"¿Desea eliminarlo de la agenda?(S/N):");
String respuesta = teclado.next();

if((respuesta.equals("S"))||(respuesta.equals("SI"))||(respuesta.equals("s"))||(respuesta.equals("si"))||(respuesta.equals("sI"))||(respuesta.equals("Si"))){
it.remove();
break;
}//endif
}else{
System.out.println("\nNo existe ningún amigo con ese correo electrónico en la agenda");
}//endif
}//for
}//endwhile
System.out.println("\n|->La agenda está vacía<-|");
}
}//class


Si pudieses motrar el código del main o por lo menos la excepción que te da en la consola de eclipse podríamos ver mejor.

saludos.
ritcher87 escribió:Si pudieses motrar el código del main o por lo menos la excepción que te da en la consola de eclipse podríamos ver mejor.

saludos.


+1
Main:

package agendadecontactos;
import java.util.*;
import java.util.Scanner;
public class Agendaapp {
static Scanner teclado = new Scanner(System.in);
public static void main(String[] args){
char opc;//opcion del menu
ArrayList <Amigo> amigos = new ArrayList <Amigo>();//creamos el ArrayList para los Amigos

do{
verMenu();
System.out.println("\n\t¿Qué desea hacer?");
opc = teclado.next().charAt(0);
System.out.println("\n");
if(opc=='a'){
Amigo.añadirAmigo(amigos);//llamamos al metodo añadirAmigo de la clase Amigo
//para añadirlo al ArrayList 'amigos'
}//endif opcion a
if(opc=='b'){
Amigo.buscarAmigo(amigos);//llamamos al metodo buscarAmigo de la clase Amigo
//para buscarlo en el ArrayList 'amigos' y visualizar sus atributos
}//endif opcion b
if(opc=='c'){
Amigo.borrarAmigo(amigos);//llamamos al metodo borrarAmigo de la clase Amigo para borrarlo
//del ArrayList 'amigos'
}//endif opcion c
if(opc=='d'){
Amigo.verAmigos(amigos);//llamamos al metodo verAmigos de la clase Amigo para visualizar los amigos
//añadidos al ArrayList 'amigos'
}//endif opcion d
}while(opc!='s');
System.out.println("\n\t--CERRANDO AGENDA--");
}//main

/////////////////Metodo para visualizar el menú de la agenda

private static void verMenu(){
System.out.println("\n\n\t --AGENDA DE CONTACTOS--"+
"\n\n\t---------------------------------\n"+
"\t| a - Añadir amigo a la agenda |\n"+
"\t| b - Buscar amigo en la agenda |\n"+
"\t| c - Borrar amigo de la agenda |\n"+
"\t| d - Mostrar lista de amigos |\n"+
"\t| s - Salir |\n"+
"\t---------------------------------");
}
}//class


Error 1 (da error al querer borrar el amigo):

--AGENDA DE CONTACTOS--

---------------------------------
| a - Añadir amigo a la agenda |
| b - Buscar amigo en la agenda |
| c - Borrar amigo de la agenda |
| d - Mostrar lista de amigos |
| s - Salir |
---------------------------------

¿Qué desea hacer?
c


Introduzca el correo electrónico del amigo que desea borrar:
ivanip

------------------------------------------
Nombre: ivan
Apellidos: izpe
Teléfono fijo: 123
Teléfono móvil: 456
Dirección: calleponcedeleon
Email: ivanip
Edad: 19
Fecha de Nacimiento: 14defebrero
------------------------------------------


¿Desea eliminarlo de la agenda?(S/N):
s
Exception in thread "main" java.lang.IllegalStateException
at java.util.AbstractList$Itr.remove(Unknown Source)
at agendadecontactos.Amigo.borrarAmigo(Amigo.java:139)
at agendadecontactos.Agendaapp.main(Agendaapp.java:24)


Error 2 (parece ser que al dejar espacios al introducir Strings como la direccion me da error):

--AGENDA DE CONTACTOS--

---------------------------------
| a - Añadir amigo a la agenda |
| b - Buscar amigo en la agenda |
| c - Borrar amigo de la agenda |
| d - Mostrar lista de amigos |
| s - Salir |
---------------------------------

¿Qué desea hacer?
a



Introduzca el Nombre:
ivan

Introduzca los Apellidos:
izpe

Introduzca el Teléfono fijo:
123

Introduzca el Teléfono móvil:
456

Introduzca la Dirección:
calle ponce de leon

Introduzca el Email:

Introduzca la Edad:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at agendadecontactos.Amigo.añadirAmigo(Amigo.java:70)
at agendadecontactos.Agendaapp.main(Agendaapp.java:16)


PD: Ya ta to arreglao, no sé como lo hize pero lo arregle jaja, muchas gracias a los que me ayudasteis ;)
PD2: +2 pa redscare :)
Pos na, entonces aplica la Primera Regla del Ingeniero: Si funciona, no lo toques [carcajad]
21 respuestas