Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Porfavor ayuda

Hola como estan estaba programando y no me funciona bien el programa, se supoe que si pongo "UETS2014" deberia salir del bucle pero en cambio no se sale y se repite hasta que se cumple la otra condicion ayuda:
int cont;
String clave;
boolean compr;
cont=0;
do
{//INICIO DEL BUCLE
cont++;
System.out.println("INGRESE LA CONTRASEÑA");
clave=leer.next();
if (clave.equals("UETS2014"))
{//INICIO DEL IF VERDADERO
System.out.println("LA CAJA FUERTE SE HA ABIERTO SATISFACTORIAMENTE");
compr = true;
}//FIN DEL IF VERDADERO
else
{//INICIO DEL IF FALSO
System.out.println("LO SIENTO, ESA NO ES LA COMBINACION");
compr = false;
}//FIN DEL IF FALSO
}while((cont<4)||(compr!=true));//FIN DEL BUCLE

mayo 4, 2016 | Registered Commenterdraaft

Con esta condición para salir del bucle do..while: compr!=true, es imposible que salga cuando se acierta con la clave: compr = true;

Por otro lado, es mejor if ("UETS2014".equals(clave)) porque tal y como lo tienes, si clave es null se lanzará una Exception, mientras que de la manera que te indico, el resultado de esa comparación sera false.

mayo 5, 2016 | Registered Commenterchoces

Cambia ((cont<4)||(compr!=true)) por (cont < 4 && compr!=true).

Así, el bucle se repetirá mientras la condición siga siendo cierta, o sea, que tanto la expresión cont<4 como compr!=true sigan siendo verdaderas. Si una falla, el bucle termina.

Te recominedo que en lugar de compr!=true, cambies a !compr ó compr==false para darle una mejor claridad a tú código.

Así que quedaría: continuar bucle si, y sólo si, cont es menor a 4 y compr es false.

mayo 5, 2016 | Registered Commenterangelns

Amigo, yo no usaria ese tipo de algoritmo para la clave, supongamos que al escribir 3 aciertos posibles y fallar en el otro, el programa se salga pero ya sabría los 3 primeros caracteres con que inicia la clave. El código se puede optimizar, yo lo haría de esta manera:

String clave="";
Scanner sc = new Scanner(System.in);

for(int i=1;i<=3;i++){
System.out.print("Introduzca la contraseña: ");

clave = sc.nextLine();
if (clave.equals("UETS2014")){
System.out.println("LA CAJA FUERTE SE HA ABIERTO SATISFACTORIAMENTE");
}
else{
System.out.println("LO SIENTO, ESA NO ES LA COMBINACION, VAN "+i+ " INTENTOS DE UN TOTAL DE 3");
}
}

mayo 8, 2016 | Unregistered CommenterCarlos

necesita retornar un valor que no sea verdadero lo que podría hacer es establecer un centinela osea un valor que no se podría genenerar como -5 para poder detener en ciclo

mayo 20, 2016 | Unregistered CommenterArturo