Java - Problemas con la comprobación de un booleano

 
Vista:
sin imagen de perfil

Problemas con la comprobación de un booleano

Publicado por Schmetterling (4 intervenciones) el 19/08/2022 16:28:08
Buenas tardes a todos,

Tengo un problema con la comprobación de un booleano en mi código y me está volviendo loca. El ejercicio me pide el nombre del equipo y del usuario, si estos son correctos en encenderá la red del equipo elegido.

Hasta el momento he conseguido que compruebe si el nombre del equipo es correcto o no, pero no me pasa lo mismo con el usuario.

Os paso el código a ver si me podéis echar una mano.

Mil gracias de antemano.

- ESTE ES EL CODIGO DENTRO DE LA CLASE USAURIO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	//método para añadir usuarios
	public void aniadir3Usuarios() {
		listaUsuario.put("Lara", 1234);
		listaUsuario.put("Andrés", 5678);
		listaUsuario.put("Pedro", 1234);
	}
 
	//método existe usuario
	public boolean existeUsuario (String usu) {
		boolean existe = false;
		if(listaUsuario.containsKey(usu)) {
			JOptionPane.showMessageDialog(null, "El usuario existe.");
			existe = true;
		}else {
			JOptionPane.showMessageDialog(null, "El usuario no es correcto.");
			existe = false;
		}return existe;
	}

-ESTE SERIA EL CODIGO DE LA CLASE RED
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
//método para loginPC
	public void loginPC() {
 
		Usuario Usuario = new Usuario();
 
 
		String Ordenador = JOptionPane.showInputDialog("¿Qué ordenador quieres conectar a la red?");
 
		Equipo e;
 
		//comprobamos usuario y conectamos el equipo a la red
		Iterator<Equipo> iterator = Equipos.iterator();
 
		if(iterator.hasNext()) {
			e = iterator.next();
			if (e.getDenominacion().equals(Ordenador)) {
				e.setConexionRed(false);
				JOptionPane.showConfirmDialog(null, "El ordenador no está conectado. ¿Quieres conectarlo?", "Alerta", JOptionPane.YES_NO_OPTION);
			}if (e.getDenominacion().equals(Ordenador)) {
				e.setConexionRed(true);
			}else {
				JOptionPane.showMessageDialog(null, "El equipo no es correcto.");
				}
		}
 
		String usu = JOptionPane.showInputDialog("Introduce tu usuario");
		if (usu.equals(usu)) {
			if(iterator.hasNext()) {
				e = iterator.next();
				if (e.getDenominacion().equals(usu)) {
					e.setConexionRed(false);
					JOptionPane.showMessageDialog(null, "El ordenador no tiene red.");
				}else {
					JOptionPane.showMessageDialog(null, "El ordenador se ha conectado.");
				}
		}else {
			JOptionPane.showMessageDialog(null, "Introduce el dato correcto.");
		}
 
 
		}
}

Espero que me podáis ayudar.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas con la comprobación de un booleano

Publicado por Kabuto (1381 intervenciones) el 19/08/2022 17:18:50
No indicas cuál es tu problemas exacto.

En cualquier caso, aquí veo una cosa rara:
1
2
3
4
String usu = JOptionPane.showInputDialog("Introduce tu usuario");
		if (usu.equals(usu)) {
			if(iterator.hasNext()) {
				e = iterator.next();

Ahí estás pidiendo un String y lo guardas en usu. Y luego preguntas "si usu es lo mismo que usu"...
Pues claro que es lo mismo, esa pregunta SIEMPRE va a retornar "true", porque estás comparando una variable consigo misma.

Posiblemente ahí quieras hacer una pregunta distinta, o comparar usu con otra cosa que no sea usu..., revísalo.
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

Problemas con la comprobación de un booleano

Publicado por Schmetterling (4 intervenciones) el 19/08/2022 17:25:06
El problema es que da igual el nombre de usuario que escriba, siempre me dice que el usuario no es correcto (aunque sea uno de los nombres que tengo en la listaUsuario.

¿Así estaría mejor? Necesito meter el existeUsuario en un if para que si existe el nombre en la lista encienda la red y si no existe me vuelva a pedir el usuario.

Gracias.

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
	//método para loginPC
	public void loginPC() {
 
		Usuario Usuario = new Usuario();
 
 
		String Ordenador = JOptionPane.showInputDialog("¿Qué ordenador quieres conectar a la red?");
 
		Equipo e;
 
		//comprobamos usuario y conectamos el equipo a la red
		Iterator<Equipo> iterator = Equipos.iterator();
 
		if(iterator.hasNext()) {
			e = iterator.next();
			if (e.getDenominacion().equals(Ordenador)) {
				e.setConexionRed(false);
				JOptionPane.showConfirmDialog(null, "El ordenador no está conectado. ¿Quieres conectarlo?", "Alerta", JOptionPane.YES_NO_OPTION);
			}if (e.getDenominacion().equals(Ordenador)) {
				e.setConexionRed(true);
			}else {
				JOptionPane.showMessageDialog(null, "El equipo no es correcto.");
				}
		}
 
		String usu = JOptionPane.showInputDialog("Introduce tu usuario");
		Usuario.existeUsuario(usu);
			if(iterator.hasNext()) {
				e = iterator.next();
				if (e.getDenominacion().equals(usu)) {
					e.setConexionRed(false);
					JOptionPane.showMessageDialog(null, "El ordenador no tiene red.");
				}else {
					JOptionPane.showMessageDialog(null, "El ordenador se ha conectado.");
				}
		}else {
			JOptionPane.showMessageDialog(null, "Introduce el dato correcto.");
		}
 
 
		}
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: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas con la comprobación de un booleano

Publicado por Kabuto (1381 intervenciones) el 21/08/2022 19:15:49
El método que marco en negrita, se supone que retorna un boolean. Has de recogerlo y/o usarlo en una expresión condicional (un IF) y actuar
de distinta manera según si devuelve true o false.
1
2
3
4
5
6
7
}
 
		String usu = JOptionPane.showInputDialog("Introduce tu usuario");
		Usuario.existeUsuario(usu);
			if(iterator.hasNext()) {
				e = iterator.next();
				if (e.getDenominacion().equals(usu)) {

Luego, este método de la clase Usuario añade unos nombres predefinidos
1
2
3
4
5
6
	//método para añadir usuarios
	public void aniadir3Usuarios() {
		listaUsuario.put("Lara", 1234);
		listaUsuario.put("Andrés", 5678);
		listaUsuario.put("Pedro", 1234);
	}

Bien, pero ¿Cuándo se ejecuta?
No veo la clase Usuario completa, así que tal vez lo estés ejecutando en el constructor.
O quizás no, y ese es el problema, que has olvidado llamar a ese método y por eso tu lista de usuarios está siempre vacía.

Si fuera ese el caso, invócalo en el constructor de Usuario
O si no, invócalo justo después de crear el objeto Usuario:
1
2
3
4
5
6
7
8
9
	//método para loginPC
	public void loginPC() {
 
		Usuario Usuario = new Usuario();
		Usuario.aniadir3Usuarios();
 
		String Ordenador = JOptionPane.showInputDialog("¿Qué ordenador quieres conectar a la red?");
 
		Equipo e;
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

Problemas con la comprobación de un booleano

Publicado por Schmetterling (4 intervenciones) el 22/08/2022 22:42:02
Mil gracias.

Ya me funciona perfectamente, me estaba volviendo loca.

Estoy empezando ahora con todo esto y me pierdo en muchos momentos.
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

Problemas con la comprobación de un booleano

Publicado por Schmetterling (4 intervenciones) el 21/08/2022 18:00:25
Hola,

Sigo sin conseguir que el programa compruebe si el nombre de usuario que escribo es el que está en la lista. Alguien me podría ayudar por favor?
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