Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ingreso de datos desde scanner tipo string pero que no acepte repetidos

Estas en el tema de ingreso de datos desde scanner tipo string pero que no acepte repetidos en el foro de Java en Foros del Web. ¿como agrego datos desde scanner tipo String pero que no acepte repetidos?? Tengo un arreglo asi : Packa.... import.... class.. public static void main ... ...
  #1 (permalink)  
Antiguo 01/12/2014, 03:07
 
Fecha de Ingreso: diciembre-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Pregunta ingreso de datos desde scanner tipo string pero que no acepte repetidos

¿como agrego datos desde scanner tipo String pero que no acepte repetidos??
Tengo un arreglo asi :
Packa....
import....
class..
public static void main ...

Scanner S=new Scaneer (System.in);
String lista [ ] =new String [5];
For (int i=0 ; i <lista.length; i++){
lista [i]=S.nextLine;
}

//HASTA AQUI TODO BIEN.. EL SCANNER SE ABRIRÁ EL NUMERO DE DIMENSION DEL ARRAY,(5 veces) en este caso para asignar a cada posicion un dato de tipo String!!!!ahora bien.. la idea es que si en la primera vez el usuario ingresó juan, la segunda vez que se abra el scanner no deje ingresar juan puesto q ya fue ingresado! !!! Me hab dicho q necesito montar otro for y comparar si lo q esta ingresando ya fue ingresado pero no he podido .. !! ALGUNA AYUDA!! ESO SOLO MONTAR EL OTRO FOR PARA VALIDAR ESOS DATOS!!! GRACIAS COLEGAS!!
  #2 (permalink)  
Antiguo 01/12/2014, 07:22
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: ingreso de datos desde scanner tipo string pero que no acepte repetidos

Buenas,

Lo mas normal para este caso es que utilices algun tipo de coleccion que un simple array.
Puedes, por ejemplo, utilizar una lista de strings:

Código Java:
Ver original
  1. Scanner S=new Scanner (System.in);
  2. List<String> lista  =new ArrayList<>();
  3. for (int i=0 ; i <5; i++){
  4.      String elemento = S.nextLine();
  5.      if (!lista.contains(elemento)) {
  6.          lista.add(elemento);
  7.      }
  8. }

O, para este caso, mejor un set, que garantiza automaticamente que no vas a tener repetidos:

Código Java:
Ver original
  1. Scanner S=new Scanner (System.in);
  2. Set<String> lista  =new HashSet<>();
  3. for (int i=0 ; i <5; i++){
  4.      lista.add(S.nextLine());
  5. }


Si te han pedido que lo hagas obligatoriamente con arrays:

Código Java:
Ver original
  1. Scanner S=new Scaneer (System.in);
  2. String lista [ ] =new String [5];
  3. for (int i=0 ; i <lista.length; i++){
  4.     boolean existe= false;
  5.     String elemento = S.nextLine();
  6.     for (int j=0; j<i; j++) {
  7.         if (lista[j].equals(elemento)) {
  8.              existe= true;
  9.          }
  10.     }
  11.     if (!existe) {
  12.          lista [i]=elemento;
  13.     }
  14. }


Nota: no tengo problema en aceptarte en amistades, pero no contesto mensajes privados

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 04/12/2014, 18:20
 
Fecha de Ingreso: diciembre-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Respuesta: ingreso de datos desde scanner tipo string pero que no acepte repetidos

gracias por la ayuda!! he entendido tu codigo para este ejercicio, y mando a imprimir todo el array, y efectivamente no me salen los repetidos, sin embargo necesito que cuando el usuario digita eje: carlos , y vuelve a escribir carlos, que el sistema no lo deje y llene ese espacio del array obligartoriamente con otro nombre.. me he logrado especificar bien? gracias por la yuda.
  #4 (permalink)  
Antiguo 05/12/2014, 02:13
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: ingreso de datos desde scanner tipo string pero que no acepte repetidos

?

Estas seguro de haber entendido del codigo?

Para hacer lo que comentas solo tienes que aniadir una linea:

Código Java:
Ver original
  1. [...]
  2.  if (!existe) {
  3.      lista [i]=elemento;
  4. } else {
  5.     System.out.println("Dato Repetido. Vuelva a introducir un elemento.");
  6.     i--; //Repetimos
  7. }

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 05/12/2014, 16:55
 
Fecha de Ingreso: diciembre-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Respuesta: ingreso de datos desde scanner tipo string pero que no acepte repetidos

Excelente hermano.. lo que me hacia falta era ese i-- al final. Gracias!!!

Etiquetas: ingreso, repetidos, scanner, string, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:02.