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
klausus escribió:... se nos pidio hacer un tres en raya con IA...
Mi tres en raya no pierde nunca(Menos mal que era un 3 en raya que si llega a ser un 4 en raya para darle IA
).
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
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?
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
}
}
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
}
}
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:
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;
}
public Empleado() {}
public getNombre(){
return this.nombre;
}
public void setNombre(String nombre){
this.nombre = nombre;
}
public Amigo() {}
-------
Amigo amigo1 = new Amigo();
amigo1.setNombre('Pedro');
String nombre = amigo1.getNombre();
redscare escribió:JArl!!! Menudo lio tienes montado
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 espublic 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ÁSPonle algún campo más a la clase Amigo. Algo en plan "nick" o "meDebePasta"
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
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;
}
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
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
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
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
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.
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
--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)
--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)