Tengo que hacer un programa para mi escuela que permita entrar a un profesor y administrador
ya tengo gran parte echa pero tengo que hacer si el nombre y contraseña están bien,pase a otro menú con otras opciones y si es incorrecto te de 3 oportunidades para poder probar la contraseña o el nombre depende de en que se equivoque
(creo que es con un while o do while pero probé hacer de todo y no puedo)
dejo algo del código por favor alguna ayuda viene muy bien,Gracias.
import java.util.Scanner;
public class proyecto {
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
String nom = new String("Docente2018");
String contra = new String("Docente2018");
String nom2 = new String("Administrador2018");
String contra2 = new String("Administrador2018");
System.out.println("1)Profesor");
System.out.println("2)Administrador");
int Opcion = leer.nextInt();
switch (Opcion) {
case 1:
System.out.println("Ingrese su nombre de usuario: ");
String nombre = leer.next();
System.out.println("Ingrese su coantraseña: ");
String contraseña = leer.next();
if(nom.equals(nombre)){
System.out.println();
}else{
System.out.println("Nombre incorrecto");
}
if(contra.equals(contraseña)){
System.out.println();
}else{
System.out.println("Contraseña incorrecta");
}
break;
case 2:
System.out.println("Ingrese su nombre de usuario: ");
String nombre2 = leer.next();
System.out.println("Ingrese su contraseña: ");
String contraseña2 = leer.next();
if (contra2.equals(contraseña2)) {
System.out.println();
} else {
System.out.println(" incorrecta");
}
if (nom2.equals(nombre2)) {
System.out.println();
} else {
System.out.println("Nombre incorrecto");
break;
}
}
}
}
Cita de: GhostMati en 16 Octubre 2018, 15:34 PM
creo que es con un while o do while pero probé hacer de todo y no puedo
y por qué no puedes? Inténtalo y comenta el error que te da y muestra el código, la porción.
Hola,
La descripción de tu post no es adecuada "Una ayudita" :-\ , y usa Código GeSHI(http://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)
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);
String nom = new String("Docente2018");
String contra = new String("Docente2018");
String nom2 = new String("Administrador2018");
String contra2 = new String("Administrador2018");
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: ");
String nombre = leer.next();
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: ");
String nombre2 = leer.next();
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) {
System.out.println(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 >:D 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);
private Integer id;
Users(final Integer id) {
this.id = id;
}
public Integer getId() {
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.";
private String nom = new String("Docente2018");
private String contra = new String("Docente2018");
private String nom2 = new String("Administrador2018");
private String contra2 = new String("Administrador2018");
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;
}
}catch (final NoSuchElementException ex) {
JOptionPane.showMessageDialog(null,"No se encuentra el usuario " + opcion);
mostrar("Saliendo de la aplicacion");
System.exit(0);
}
}
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) {
System.out.println(msg);
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) {
System.out.println(msg);
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) {
System.out.println(s);
}
public static void main(String ..._0x52) {
new ProfeAdmin2();
}
}
(http://3.bp.blogspot.com/-FivPD3F9Pg0/W8ilT0IZ32I/AAAAAAAADI0/U_HCBQ3Q53kyibva_f9odmkQ76yxl7bvACK4BGAYYCw/s1600/profeAdmin.gif)
Yo hice un proyecto parecido solo que el mío en el login ace confección con una base de datos mediante xampp y SQL te lo podría enviar por si te sirve
Gracias por toda la ayuda y el como utilizar de mejor manera la pagina, lo agradezco.