Una ayudita

Iniciado por GhostMati, 16 Octubre 2018, 15:34 PM

0 Miembros y 1 Visitante están viendo este tema.

GhostMati

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;
         }
      }
   }
}

srWhiteSkull

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.

rub'n

#2

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  :-(

Código (java) [Seleccionar]

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
Código (java) [Seleccionar]
getUsersByID()



Código (java) [Seleccionar]
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();
   }

}




rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

TonyHL

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

GhostMati

Gracias por toda la ayuda y el como utilizar de mejor manera la pagina, lo agradezco.