Hola a todos, soy nuevo en el foro y necesito su ayuda.
Tengo que crear una agenda con varias opciones, entre ellas esta el de agregar contacto en el cual se almacena en una posicion en el arreglo de objetos que tiene 5 atributos que son nombre, direccion, telefono, correo y edad, todo va bien cuando lo corro, los datos que va a agregando el usuario se guadan, y en el metodo agregarcontacto utilizo una variable bandera "nc" que inicializo en -1 y va aumentando cada vez que agrego un nuevo contacto, para asi que los valores que tomen los atributos se guarden en cada posicion del arreglo. pero el problema es cuando voy a agregar el 4 contacto, el atributo nombre que es el primer atributo no me lo toma en cuenta o sea se lo saltea y no me deja ponerle nombre y se pasa al atributo direccion, es decir el atributo nombre del cuarto contacto que quiero agregar me lo deja en blanco.
Alguien me podria decir cual es mi error o que podria hacer. y gracias por su atencion
codigo:
Clase Contacto
class Contacto
{
public String nombre;
private String direccion, telefono, correo;
private int edad;
private Scanner sc = new Scanner(System.in);
public Contacto() {
this.nombre = "";
this.direccion = "";
this.correo = "";
this.telefono = "";
this.edad = 0;
}
/*public contacto(){
}*/
public void entradaDatos() {
System.out.println("Dame el nombre");
this.nombre = sc.nextLine();
System.out.println("Dame la direccion");
this.direccion = sc.nextLine();
System.out.println("Dame el telefono");
this.telefono = sc.nextLine();
System.out.println("Dame el correo");
this.correo = sc.nextLine();
System.out.println("Dame la edad");
this.edad = sc.nextInt();
}
public void mostrarDatos() {
System.out.println("nombre: " + this.nombre);
System.out.println("direccion: " + this.direccion);
System.out.println("correo: " + this.correo);
System.out.println("Telefono: " + this.telefono);
System.out.println("Edad: " + this.edad);
System.out.println(" ");
}
}
Clase Proyecto_agenda
public class Proyecto_agenda {
public static Contacto agenda[];
public static Contacto aux;
public static int n = 5;
public static int nc = -1;
public static Scanner sc = new Scanner(System.in);
public static void crearAgenda(Contacto a[]) {
for (int i = 0; i < a.length; i++) {
a[i] = new Contacto();
}
}
public static void agregarContacto(Contacto a[]) {
nc++;
if (nc < n) {
a[nc].entradaDatos();
ordIntercambio(a);
} else {
System.out.println("Contactos llenos");
}
}
public static void mostrarAgenda(Contacto a[]) {
for (int i = 0; i < n; i++) {
a[i].mostrarDatos();
}
}
/*public static void intercambiar(Contacto[] a, int i, int j) {
aux = a[j];
a[j] = a[j+1];
a[j+1] = aux;
}*/
public static void ordIntercambio(Contacto[] a) {
int i, j;
for (i = 1; i < a.length; i++) {
for (j = 0; j < a.length - 1; j++) {
if ((a[j].nombre).compareTo(a[j + 1].nombre) > 0) {
do{
aux = a[j];
a[j] = a[j + 1];
a[j + 1] = aux;
}while (a[j].nombre!="");
}
}
}
}
public static void menu() {
int op;
do {
System.out.println("Menu AGENDA TELEFONICA ");
System.out.println("1-. Añadir Contacto");
System.out.println("2-. Mostrar Contacto");
System.out.println("9-. Salir");
System.out.println("opcion -->");
op = sc.nextInt();
switch (op) {
case 1:
agregarContacto(agenda);
break;
case 2:
mostrarAgenda(agenda);
}
} while (op < 9);
}
public static void main(String[] args) {
agenda = new Contacto[n];
crearAgenda(agenda);
aux = new Contacto();
menu();
}
}