Eu sei que existem tópicos falando sobre isso mas eles sempre ou quase sempre tratam do assunto quando é na parte de layolt e eu quero saber como faço para esperar quando pressiono Enter no modo terminal mesmo.
Abaixo segue o código e abaixo dele o que eu gostaria:
package verifica.senha.forte;
import java.awt.event.KeyEvent;
import java.util.Scanner;
/**
*
* @author Leandro
*/
public class VerificaSenhaForte {
private int key;
private Scanner entrada;
private String senha;
private char vetSenha[];
private char vetAlfabeto[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
private char vetAlfabetoUpperCase[] = {'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
private char vetCaracteresEspeciais[] = {'ç', '!', '@', '#', '$', '%',
'¨', '&', '£', '¢', '¬', '&', '*', '(', ')', '-', '_', '+', '=', '§', '{', '[', 'ª', '}',
']', 'º', '^', '~', '<', ',', '>', '.', ':', ';', '?', '/', '°', '|', '¹', '²', '³'};
private char vetNumeros[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'Ç'};
public VerificaSenhaForte() {
System.out.println("Digite a senha que deseja testar:");
entrada = new Scanner(System.in);
senha = entrada.nextLine();
if (senha.trim().isEmpty() == true || senha.length() < 5) {
System.out.println("A senha contém menos de 5 caracteres "
+ "ou está vazia.\n");
} else {
OrganizaSenha();
}
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public char[] getVetSenha() {
return vetSenha;
}
public void setVetSenha(char[] vetSenha) {
this.vetSenha = vetSenha;
}
public void Observacoes() {
VerificaTeclaPressionada();
}
public void OrganizaSenha() {
System.out.println("\nObservações:\n\n"
+ " 1) Caso a senha possua espaços eles serão"
+ " automaticamente removidos.\n"
+ " 2) Se a senha possuir caracteres não permitidos como"
+ " ' " + "estes caracteres serão removidos.\n"
+ "\nPressione Enter para continuar ou qualquer tecla para sair.\n");
Observacoes();
}
public void VerificaTeclaPressionada() {
key = KeyEvent.KEY_PRESSED;
if (key == KeyEvent.VK_ENTER) {
senha.replaceAll("'", "");
senha.trim();
vetSenha = new char[senha.toCharArray().length];
vetSenha = senha.toCharArray();
VerificaSenha();
} else {
System.out.print("não deu\n");
System.exit(0);
}
}
public void VerificaSenha() {
int cont = 0;
String forcaSenha = "";
alfabeto:
for (int i = 0; i < vetSenha.length; i++) {
for (int r = 0; r < vetAlfabeto.length; r++) {
if (vetSenha[i] == vetAlfabeto[r]) {
cont++;
break alfabeto;
}
}
}
alfabetoM:
for (int i = 0; i < vetSenha.length; i++) {
for (int r = 0; r < vetAlfabetoUpperCase.length; r++) {
if (vetSenha[i] == vetAlfabetoUpperCase[r]) {
cont++;
break alfabetoM;
}
}
}
numeros:
for (int i = 0; i < vetSenha.length; i++) {
for (int s = 0; s < vetNumeros.length; s++) {
if (vetSenha[i] == vetNumeros[s]) {
cont++;
break numeros;
}
}
}
caracEsp:
for (int i = 0; i < vetSenha.length; i++) {
for (int e = 0; e < vetCaracteresEspeciais.length; e++) {
if (vetSenha[i] == vetCaracteresEspeciais[e]) {
cont++;
break caracEsp;
}
}
}
if (cont <= 2) {
forcaSenha = "fraca";
}
if (cont == 3) {
forcaSenha = "média";
}
if (cont >= 4) {
forcaSenha = "forte";
}
System.out.println("\nA senha introduzida é: " + senha + "\n"
+ "Força da senha: " + forcaSenha + "\n"
+ "Número de caracteres da senha: " + getSenha().length());
}
public static void main(String[] args) {
VerificaSenhaForte verifica = new VerificaSenhaForte();
}
}
Gostaria que após exibir a mensagem avisando sobre as possíveis alterações na senha o aplicativo esperasse pela ação do usuário de pressionar Enter ou outra tecla qualquer, assim como acontece em um scanner por exemplo mas o que ocorre é que quando digito a senha, logo após teclar enter para confirmar a entrada do Scanner já é exibido as observações e o programa se encerra... Alguém pode me ajudar a mapear corretamente esta tecla Enter e dizer como fazer o aplicativo esperar até que ela ou outra tecla seja pressionada após exibir as observações?
Deade já muito obrigado a todos ^^'.