Evitar duplicados en una lista
Publicado por Mónica (5 intervenciones) el 01/07/2024 11:21:00
Buenos días:
Como estoy empezando con Java estoy haciendo algo que debería ser sencillo: una lista de nombres y apellidos.
Lo que estoy intentando hacer ahora es impedir que si un nombre ya está grabado no se pueda volver a grabar. Con nombre me refiero a la combinación de nombre + apellido. Pero quizás no estoy utilizando la estructura correcta. ¿Sería mejor utilizar un ArrayList...?
Y abusando un poco de vuestra paciencia. El código tiene una public class y una final class. Como lo hice hace un tiempo y luego tuve que aparcarlo, ahora no entiendo por qué declaré una final class. Supongo que en su momento lo vi en el código de alguien y lo tenía muy claro, pero ahora no. ¿Es necesaria esa final class o sólo es un estorbo?.
Este código lo he hecho con NetBeans y al introducir un nuevo nombre, primero pregunta el nombre y después el apellido. Pero le he ejecutado en Windows PowerShell y ya no pregunta por el nombre. No sé por qué.
Gracias.
Mónica
Como estoy empezando con Java estoy haciendo algo que debería ser sencillo: una lista de nombres y apellidos.
Lo que estoy intentando hacer ahora es impedir que si un nombre ya está grabado no se pueda volver a grabar. Con nombre me refiero a la combinación de nombre + apellido. Pero quizás no estoy utilizando la estructura correcta. ¿Sería mejor utilizar un ArrayList...?
Y abusando un poco de vuestra paciencia. El código tiene una public class y una final class. Como lo hice hace un tiempo y luego tuve que aparcarlo, ahora no entiendo por qué declaré una final class. Supongo que en su momento lo vi en el código de alguien y lo tenía muy claro, pero ahora no. ¿Es necesaria esa final class o sólo es un estorbo?.
Este código lo he hecho con NetBeans y al introducir un nuevo nombre, primero pregunta el nombre y después el apellido. Pero le he ejecutado en Windows PowerShell y ya no pregunta por el nombre. No sé por qué.
Gracias.
Mónica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
public class ListaNombres{
final class haciendoLista {
String nombre;
String apellido;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
@Override
public String toString() {
return "nombre " + nombre + "apellido " + apellido;
}
}
final static int MAX_NOMBRES = 5;
haciendoLista[] nombres = new haciendoLista[MAX_NOMBRES];
int numNombres = 0;
public void nuevoNombre() throws ArrayIndexOutOfBoundsException {
try {
Scanner scanner = new Scanner(System.in);
nombres[numNombres] = new haciendoLista();
System.out.print("Nombre: ");
nombres[numNombres].nombre = scanner.nextLine();
System.out.print("Apellido: ");
nombres[numNombres].apellido = scanner.nextLine();
System.out.println("Nombre añadido");
numNombres++;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error: no se poden añadir más nombres");
}
}
public void listaNombres() {
System.out.println();
for(var indice = 0; indice < numNombres; indice++)
System.out.println((indice + 1) + " -> " + nombres[indice].nombre + " " + nombres[indice].apellido);
System.out.println();
}
enum Opcion {NUEVO, LISTA, SALIR};
void bucleApp(){
Opcion opcion;
do {
muestraListaOpciones();
opcion = solicitaOpcion();
switch (opcion) {
case NUEVO-> {
nuevoNombre();}
case LISTA -> {
listaNombres();}
}
} while (opcion != Opcion.SALIR);
}
void muestraListaOpciones() {
for (Opcion unaOpcion : Opcion.values()) {
System.out.printf("\t%d -> %s\n", unaOpcion.ordinal(), unaOpcion.name());
}
}
// Solicitar al usuario la opcion que quiere ejecutar
Opcion solicitaOpcion()throws InputMismatchException, ArrayIndexOutOfBoundsException {
try {
Scanner scanner = new Scanner(System.in);
int opcion;
System.out.print("\nIntroduce el numero de opcion: \n");
opcion = scanner.nextInt();
return Opcion.values()[opcion];
} catch (InputMismatchException | ArrayIndexOutOfBoundsException e) {
System.out.println("Error: opcion incorrecta");
}
return solicitaOpcion();
}
public static void main(String[] args) {
(new ListaNombres()).bucleApp();
}
}
Valora esta pregunta


0