Hola,
La descripción de tu post no es adecuada "Una ayudita" , y usa Código GeSHI
Este es tu código algo modificado para que funcione pero se hacia largo y aun faltaba comparar
import java.util.Scanner;
public class ProfeAdmin {
public static void main
(String[] args
) {
Scanner leer
= new Scanner
(System.
in); System.
out.
println("1)Profesor"); System.
out.
println("2)Administrador"); int Opcion = leer.nextInt();
int count = 1; // uso de contador para contrar la oportunidades que son 3
switch (Opcion) {
case 1:
System.
out.
println("Ingrese su nombre de usuario: ");
System.
out.
println("Ingrese su contraseña: "); String contraseña
= leer.
next();
// establecer 3 oportunidades si se equivoca en el nombre o la contraseña
if (nom.equals(nombre) && contra.equals(contraseña)) {
mostrar("Correcto access granted");
} else {
if (!nom.equals(nombre)) { // se lee, "si nom no es igual a nombre" , dara true
System.
out.
println("Nombre incorrecto"); int countO = 3;
while (count <= 3) {
ShowData.showLn("Oportunidad " + (countO--));
ShowData.showLn("Ingrese Nombre");
final String newName
= leer.
next();
if (newName.equals(nom)) {
ShowData.showLn("Nombre Correcto");
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
} else if (!contra.equals(contraseña)) { //si la contra no es igual a contraseña, dara true
System.
out.
println("Contraseña incorrecta"); int countO = 3;
while (count <= 3) {
mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
mostrar("Ingrese contraseña");
final String newPass
= leer.
next();
if (newPass.equals(contra)) {
mostrar("Contraseña correcta");
/*
Aqui introducir siguente menu
*/
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
}
}
break;
case 2:
System.
out.
println("Ingrese su nombre de usuario: "); System.
out.
println("Ingrese su contraseña: "); String contraseña2
= leer.
next();
if (nom2.equals(nombre2) && contra2.equals(contraseña2)) {
mostrar("Correcto access granted");
} else {
if (!nom2.equals(nombre2)) { // se lee, "si nom no es igual a nombre" , dara true
System.
out.
println("Nombre incorrecto"); int countO = 3;
while (count <= 3) {
mostrar("Oportunidad " + (countO--));
mostrar("Ingrese Nombre");
final String newName
= leer.
next();
if (newName.equals(nom2)) {
mostrar("Nombre Correcto");
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
} else if (!contra2.equals(contraseña2)) { //se lee, la contra no es igual a contraseña, dara true
System.
out.
println("Contraseña incorrecta"); int countO = 3;
while (count <= 3) {
mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
mostrar("Ingrese contraseña");
final String newPass
= leer.
next();
if (newPass.equals(contra2)) {
mostrar("Contraseña correcta");
/*
Aqui introducir siguente menu
*/
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
}
}
break;
}
}
private static void mostrar
(final String s
) { }
//establecer oportunidades, son 3, creamos un metodo
private void filtrar() {
}
}
tu código original carece de métodos, uso de contructor, de variables de instancia, variables de clase, es bueno que le des un vistazo y refactorises tu código con eso., y ahora con este codigo se nota algo de diferencia con respecto a la reducción de líneas, solo que usamos tipos enum aquí
para las sentencias switch puedes usar enum ver linea 50 el método getUsersByID()
package foro;
import javax.swing.*;
import java.util.EnumSet;
import java.util.NoSuchElementException;
import java.util.Scanner;
enum Users {
DOCENTE(1),
ADMINISTRADOR(2);
this.id = id;
}
return id;
}
//buscando los usarios
public static Users getUsersByID
(final Integer id
) { return EnumSet.allOf(Users.class)
.stream()
.filter(object -> id.equals(object.id))
.findFirst() //detienela busqueda de las lista con la primera conincidencia
.get(); // retorna un NoSuchElementException en caso que no exista dicho id
}
}
public class ProfeAdmin2 {
private static final Scanner LEER
= new Scanner
(System.
in); private static final String ACCESS_GRANTED
= "Access Granted."; private static final String DATOS_INCORRECTOS
= "Datos incorrectos.";
public ProfeAdmin2() {
System.
out.
println("1)Profesor"); System.
out.
println("2)Administrador"); final int opcion = LEER.nextInt();
try {
final Users users = Users.getUsersByID(opcion);
switch (users) {
case DOCENTE:
process(nom,contra); // pasando parametros correspondientes al metodo process para reutilizarlo
break;
case ADMINISTRADOR:
process(nom2,contra2); // pasando parametros correspondientes al metodo process para reutilizarlo
break;
}
JOptionPane.
showMessageDialog(null,
"No se encuentra el usuario " + opcion
); mostrar("Saliendo de la aplicacion");
}
}
private void process
(final String paramNom,
final String paramPass
) { System.
out.
println("Ingrese su nombre de usuario: "); final String nombre
= LEER.
next();
System.
out.
println("Ingrese su contraseña: "); final String contraseña
= LEER.
next();
// establecer 3 oportunidades si se equivoca en el nombre o la contraseña
int count = 0;
if (nombre.equals(paramNom) && contraseña.equals(paramPass)) {
mostrar(ACCESS_GRANTED);
/*
Pasar a otro menu aqui
*/
} else {
if(!nombre.equals(paramNom) && !contraseña.equals(paramPass)) {
mostrar(DATOS_INCORRECTOS);
ingresarNombre("", paramNom);
ingresarPass("", paramPass);
mostrar(ACCESS_GRANTED);
}
else if (!nombre.equals(paramNom)) { // se lee, "si nom no es igual a paramNom" , dara true
ingresarNombre("Nombre incorrecto",paramNom);
} else if (!contraseña.equals(paramPass)) { //si la contra no es igual a paramPass, dara true
ingresarPass("Contraseña incorrecta",paramPass);
}
}
}
private void ingresarNombre
(final String msg,
final String paramNom
) { int countO = 3;
int count = 0;
while (count <= 3) {
mostrar("Oportunidad " + (countO--));
mostrar("Ingrese Nombre");
final String newName
= LEER.
next(); if (newName.equals(paramNom)) {
mostrar("Nombre Correcto");
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
}
private void ingresarPass
(final String msg,
final String paramPass
) { int countO = 3;
int count = 0;
while (count <= 3) {
mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
mostrar("Ingrese contraseña");
final String newPass
= LEER.
next(); if (newPass.equals(paramPass)) {
mostrar("Contraseña correcta");
break;
} else {
count++;
continue;
}
}
count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
// xq no entrara mas en el while
}
private <T> void mostrar(final T s) {
}
public static void main
(String ..._0x52
) { new ProfeAdmin2();
}
}