Java - Verificar si en el txt existe usuario y contrasena almacenados

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 26 puestos en Java (en relación al último mes)
Gráfica de Java

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Ulises (6 intervenciones) el 01/11/2018 06:25:26
Ayuda como leer todo el contenido de txt y verificar si existe nombre y contrasena mandados si existe mandar mensaje, tengo este codigo pero no me recorre y valida todo el contenido que hay en el txt.
Espero que me puedan apoyar saludos!.

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
public class recuperar{
 
    public static void main(String[] args) {
 
        String usuario = "juan";
        String pass = "1234");
 
        int numLineas=200;
        int contador=0;
 
        String datos []=new String [numLineas];
 
        BufferedReader reader = new BufferedReader(new FileReader("texto.txt"));
        String linea = reader.readLine();
 
        while (linea != null && contador< numLineas)
        {
            datos[contador]=linea;
            linea = reader.readLine();
            contador++;
 
        }
 
        if(datos[contador].equals(usuario)&&datos[contador].equals(pass)){
 
            System.out.println("Bienvenido");
 
        }else{
            System.out.println("No esta registrado");
 
        }
 
 
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Tom (1570 intervenciones) el 01/11/2018 09:58:14
datos[contador] no puede ser al mismo tiempo igual a usuario e igual a pass, a no ser que usuario y pass también sean iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 2.307
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Kabuto (580 intervenciones) el 01/11/2018 11:39:22
Como dice Tom, esta condición es imposible que se cumpla:
1
if(datos[contador].equals(usuario)&&datos[contador].equals(pass)){

Ahí contador tiene el mismo valor, que es de hecho el número de última linea encontrada + 1

Y claro, el nombre de usuario puede que estén en datos[20], el del pass en datos[21] y contador en este momento a lo mejor vale 56... vete a saber, depende de las lineas que tenga el txt.

Yo lo enfocaría de otro modo, ni siquiera usaría un array de Strings para recorrer todas las líneas.
Yo usaría dos valores booleanos, uno para el nombre y otro para el pass, que pasarían a true si encuentro dichos datos.
Algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String usuario = "juan";
String pass = "1234";
boolean usuarioEncontrado = false;
boolean passEncontrado = false;
 
BufferedReader reader = new BufferedReader(new FileReader("texto.txt"));
String linea = reader.readLine();
 
while (linea != null)
{
if (linea.equals(usuario))
    usuarioEncontrado = true;
if (linea.equals(pass)
    passEncontrado = true;
 
linea = reader.readLine();
}
 
if(usuarioEncontrado && passEncontrado){
    System.out.println("Bienvenido");
}else{
    System.out.println("No esta registrado");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 26 puestos en Java (en relación al último mes)
Gráfica de Java

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Ulises (6 intervenciones) el 03/11/2018 02:30:04
1
2
3
4
String usuario = "juan";
String pass = "1234";
String usuario = "paco";
String pass = "1234899";



si funciona pero si tengo otro usuario en el txt y pongo la contrasena de ese usuario , entra con contrasenas que estan ahy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 2.307
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Kabuto (580 intervenciones) el 03/11/2018 12:32:47
¿El txt tiene que tener un formato específico o el que tu quieras?

Lo digo porque una forma sencilla de solucionarlo es hacer que cada linea del txt, tenga el nombre de usuario y contraseña correspondiente, separados por uno o varios caracteres, por ejemplo, dos guiones: --

Ejemplo de txt:
1
2
3
pedro--1234
sara--calcetin
lucas--34luke90

Con este formato, luego en el programa nos basta con leer una sola linea, y separar mediante los dos guiones el nombre y pass para poder preguntar.
El metodo .split() de la clase String puede ser útil para esto.

Por cierto, otro cambio que habría que introducir es que si encuentra el usuario y contraseña, no siga leyendo lineas del txt, ya que no es necesario.

Y además hay cierto peligro al usar dos booleanos para controlar si hemos encontrado el usuario.
Me refiero que a lo mejor en una linea no coincide el usuario, pero si la contraseña, en este caso usuarioEncontrado queda en FALSE y passEncontrado queda en TRUE.
Aqui no pasaría nada y seguiríamos leyendo lineas.
Pero imagina que en la siguiente linea sí coincide el nombre, pero no el password
Aquí usuarioEncontrado pasa a valer TRUE.
passEncontrado no varía, pero como en la linea anterior lo hemos dejado en TRUE, aquí tenemos el problema de que el programa piensa que sí lo ha encontrado, pero no es cierto.
Seguramente este sea el problema que tú comentabas, que el usuario acaba entrando con contraseñas de otros

Tenemos dos opciones:
- o reiniciamos a FALSE los dos booleanos al principio del bucle while para que siempre comencemos a evaluar lineas con los dos en FALSE.
- o bien utilizamos un único booleano, que además nos puede servir como segunda condicion a cumplir para el bucle while

Podría quedar así:
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
String usuario = "juan";
String pass = "1234";
boolean datosLoginEncontrados = false;
 
 
BufferedReader reader = new BufferedReader(new FileReader("texto.txt"));
String linea = reader.readLine();
 
while (linea != null && datosLoginEncontrados == false)
{
//En linea tenemos nombre y password juntos, separados por dos guiones.
//Usamos split() para que "corte" el String a partir de esos dos guiones
//Esto nos dará un array con dos elementos, el primer elemento contendrá el nombre y el segundo el password
String[] datosLogin = linea.split("--");
//YA tenemos los datos separados, comprobamos si coinciden
if (datosLogin[0].equals(usuario) && datosLogin[1].equals(pass))
    datosLoginEncontrados = true;//Al pasar a true, el bucle while finalizará
else
    linea = reader.readLine();
 
}
 
if(datosLoginEncontrados){
    System.out.println("Bienvenido");
}else{
    System.out.println("No esta registrado");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 26 puestos en Java (en relación al último mes)
Gráfica de Java

Verificar si en el txt existe usuario y contrasena almacenados

Publicado por Ulises (6 intervenciones) el 03/11/2018 17:15:45
Gracias amigo me ha funcionado!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar