[ Foro de Java ]

Ejercicio 6.1.6 - clave de acceso

01-Nov-2015 23:14
Invitado (Gerard)
2 Respuestas

Crea un programa que pida al usuario su login (un
número entero) y su contraseña (otro número entero). Se repetirá mientras el
usuario introduzca un login distinto de "1809" o una contraseña distinta de
"1234", hasta un máximo de tres veces. Tras tres fallos, se mostrará un
mensaje avisando al usuario de que se le deniega el acceso.

Hola tengo algunas dudas sobre este ejercicio. Adjunto codigo, mas bien es cuando se compila el codigo, la muestra es la siguiente :
introduzca un login: 3456
Introduzca su pass:6789
introduzca un login: 5678
Introduzca su pass:4567
introduzca un login: 4356
Introduzca su pass:5443
acceso denegado..
y cuando se introduce el login valido (1809)
introduzca un login: 2134
Introduzca su pass:2134
introduzca un login: 1809
Introduzca su pass:213
login y pass, correctos...
me sale esto, ahora cambiando el operador && por ||
introduzca un login: 1234
Introduzca su pass:1809
introduzca un login: 1809
Introduzca su pass:213
introduzca un login: 1809
Introduzca su pass:2134
acceso denegado..
la duda es mas bien si es un hasta es un && o ||


import java.util.Scanner;

public class While6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner teclado= new Scanner(System.in);
		int login=0;
		int pass=0;
		int intentos=1;
		int maximo=3;
			
				while((login!=1809)||(pass!=1234)&& (intentos<maximo)){
					
					System.out.print("introduzca un login: ");
					login=teclado.nextInt();
					System.out.print("Introduzca su pass:");
					pass=teclado.nextInt();
					
					if(intentos==3){
						System.out.println("acceso denegado..");
						intentos=intentos-maximo;
					}
				
					intentos++;
					
				
				
				
			}
			
			
			System.out.println("login y pass, correctos...");
			
			
	}

}


 


13-Nov-2015 20:46
Nacho Cabanes (+84)

Cuidado con agrupar tantas condiciones.

En primer lugar, los && se analizan antes que los ||, por lo que necesitarás un paréntesis. Por otra parte, la condición básica que propones es correcta salvo por ese detalle, porque, efectivamente, hay que repetir mientras haya intentos restantes y falle en el login o la contraseña.


while( ((login!=1809)||(pass!=1234)) && (intentos<maximo)){


13-Nov-2015 20:47
Invitado (deo)

ASi al botepronto creo que no estas fino con:

while((login!=1809)||(pass!=1234)&& (intentos<maximo)){

que tal algo como:
while(          (  (login!=1809)||(pass!=1234)  )
                                              &&
                                 (intentos<maximo)                          ){ ......}
o
while(          !(  (login==1809) && (pass==1234)  )
                                              &&
                                 (intentos<maximo)                          ){ ....}






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)