há bug quando executa mais de uma vez (a senha está acumulando com a senha antiga).
package Senha;
import java.util.Scanner;
public class ServidorOTP {
private String[]caracteres = {"0","1","2","3","4","5","6","7","8","9","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","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 String senha = "";
int tipo;
String codigo;
Scanner teclado = new Scanner(System.in);
public String getsenha() {
return senha;
}
public void setsenha(String senha){
this.senha = senha;
}
void validatipo(int tipo) {
if(tipo == 1){
gsa();
}else if (tipo == 2 ) {
si();
}if (tipo == 3) {
vs();
}
}
void gsa() {
for (int x=0; x<8; x++) {
int j = (int) (Math.random()*caracteres.length);
senha += caracteres[j];
}
System.out.println(" Seu código é:"+senha);
}
void si() {
System.out.println("Digite a Senha: ");
senha = teclado.next();
while (senha.length() >8 || senha.length()<8) {
System.out.println("Digite uma senha que contenha 8 caracteres!");
System.out.println("Digite a senha: ");
senha = teclado.next();
}
System.out.println("Seu código é: "+senha);
}
void vs() {
System.out.println("Insira o código: ");
codigo = teclado.next();
if(codigo.equals(senha)) {
System.out.println("!Parabéns!");
this.setsenha(null);
}else if (senha == null){
System.out.println("Código expirado");
}else {
System.out.println("Código divergente");
}
}
}