Exibir mensagem em JOptionPane pro usuário dentro do looping

1 resposta
joptionpanelprogramaçãojava
F

Olá, sou iniciante em programação e Java, agradeço desde já

Quero exibir a mensagem sistema liberado mais nada acontece

if(usuario.equals(“Franck”)&& senha.equals(“adm”)){
systemOpen = true;
JOptionPane.showMessageDialog(null, “Sistema Liberado” );
break;
}


Se o usuário digitar a senha corretamente systemOpen vai receber o valor verdadeiro depois será exibido a mensagem “Sistema Liberado” aí vai sair do looping, pelo menos assim que eu imaginei

Código completo abaixo

String senha="", usuario=""; int cont=0; boolean systemOpen = false; // Declaração de Variáveis Acima Para o Programa até agora Scanner ler = new Scanner(System.in);
do{
    //---------------------------------------    
        System.out.print("Usuario: ");
        usuario = ler.next();
        System.out.print("Senha: ");
        senha = ler.next();
    //-------------Ler o usuário e senha---------------    
        
       cont++;
       
        if(usuario.equals("Franck")&& senha.equals("adm"))/*Liberando o Sistema*/{
            systemOpen = true;
            JOptionPane.showMessageDialog(null, "Sistema Liberado" );// Aqui que está dando ruim, não mostra a mensagem nem acontece mais nada e não dá erro
            break;//Se o usuário a senha e o nome certo vai sair do lopping
            
        }else if(cont<3){
            System.out.println("Acesso Negado");// Se eu digitar o usuário ou a senha errado vai exibir essa mensagem e uma das mensagens abaixo
            
        if(usuario.equals("Franck")==false && senha.equals("adm")==false)
              System.out.println("Senha e Usuário incorretos tente novamente \n");// Mostra que eu digitei errado a usuário e a senha 
        } 
        if(usuario.equals("Franck")==true && senha.equals("adm")==false){
              System.out.println("Senha ou Usuário incorretos tente novamente \n");// Mostra que eu digitei errado o usuário ou a senha
          } 
        if(usuario.equals("Franck")==false && senha.equals("adm")==true){
              System.out.println("Senha ou Usuario incorretos tente novamente \n");// Mostra que eu digitei errado o usuário ou a senha
    }           
            
       if(cont==3){
           JOptionPane.showMessageDialog(null,"Sistema Bloqueado"); // Se eu digitar a senha ou usuário errado três vezes vai exibir essa mensagem
           //Aqui acontece acontece a mesma coisa que na outra mensagem
       }
    }while(cont<3);

    if(systemOpen == true){
     // se o sistema for liberado o programa começa
    
        
    } </code>

Detalhe se eu colocar para exibir uma mensagem (.showMessageDialog() ) antes de entra no looping as mensagens dentro do looping funcionam.

1 Resposta

4

@Francisco_Ribeiro

Montei este exemplo, ja que vc estava usando JOptionPane pensei que seria mais viável mostrar como fazer o input usando eles. Eu usei um while, ele verifica por primeiro o nº de tentativas, caso seja menor ou igual a zero ou a validação ainda esteja falsa, o sistema continuará rodando. Sempre que ele errar seja senha ou login, a tentativa diminui, logo, ao errar três vezes (que é a quantidade inicial de tentativas que eu defini) ele sairá do looping e uma mensagem avisara o usuário. Se acertar o login, o sistema muda a variável booleana para true e também sai do while. Fora do looping que eu trato a ação a ser feita, já que independente se for acertada a senha, ou excedido o numero de tentativas, haverá uma operação que finalizara a operação de validação.

public class Validacao {

    private static int tentativas = 3;

    public static void main(String[] args) {
        boolean validacao = false;
        while (tentativas > 0 && validacao == false) {
            String usuario = JOptionPane.showInputDialog("Usuario: ");
            String senha = JOptionPane.showInputDialog("Senha: ");
            if (usuario.equals("Franck") && senha.equals("adm")) {
                validacao =true;
            }else{
                tentativas--;
                JOptionPane.showMessageDialog(null, "Senha invalida, você tem mais "+tentativas+" tentativas");
            }
        }
        if (validacao) {
            JOptionPane.showMessageDialog(null, "Seja bem vindo Franck!");
        }else{
            JOptionPane.showMessageDialog(null, "O usuário excedeu o limite de tentativas");
        }
    }
}
Criado 7 de janeiro de 2017
Ultima resposta 9 de jan. de 2017
Respostas 1
Participantes 2