Gerar String Automático[RESOLVIDO]

Pessoal, existe algum gerador de String aleatória em Java, mais ou menos algo similar ao Math?

Porque estou precisando gerar uma String só que de forma aleatória, apenas passando alguns caracteres que devem conter nessa string.

Obrigada

Você pode criar isso dentro de um método por exemplo (acredito eu).
Faz a validação dessa entrada de caracteres que você deseja, e cria uma tabela dentro do seu banco de dados com varias inserts de palavras.
Dentro do seu método, faz uma busca dentro do seu banco para que ele retorne somente a palavra que contenha os caracteres desejados.

Acho que assim funcione, talvez…

Quis ajudar de alguma forma^^

[]'s

Olha, tenho algo que pode lhe interessar…

[code]import java.util.Scanner;

public class JogoDaMemoria {
private char[][] letras = new char[6][6];
private boolean[][] estaVirada = new boolean[6][6]; // Controla se o par de letras já foi encontrado

// Método para espalhar as letras pelo array
public void povoaJogo() {
	StringBuilder letrasSorteadas = new StringBuilder("AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRR"); // Sequência de letras necessárias para o array
	int letraAtual = 0;  // Armazena letra atual a ser inserida no array de peças
	int numeroDeLetrasRestantes = 36;
	
	for(int i = 0; i < letras.length ; i++) {
		for(int j = 0; j < letras[i].length; j++) {
			letraAtual = (int) (Math.random() * numeroDeLetrasRestantes);
			letras[i][j] = letrasSorteadas.charAt(letraAtual);
			letrasSorteadas.deleteCharAt(letraAtual);
			numeroDeLetrasRestantes--;
		}
	}
} // fim do método povoaJogo

// Método para ocultar as letras

public void desviraLetras() {
	for(int i = 0; i < estaVirada.length; i++) {
		for(int j = 0; j < estaVirada[i].length; j++) {
			estaVirada[i][j] = false;
		}
	}
} // Fim do método desviraLetras


public void iniciarJogo() {
	Scanner entrada = new Scanner(System.in);
	int pontuacaoJogadorUm = 0;
	int pontuacaoJogadorDois = 0;
	int jogadorDaVez = 1;

	int linhaPrimeiraEscolha;
	int colunaPrimeiraEscolha;
	int linhaSegundaEscolha;
	int colunaSegundaEscolha;
	
	System.out.println("JOGO DA MEMÓRIA - para 2 jogadores");
	System.out.println("Indique as linhas e colunas das peças que deseja desvirar\npara achar os pares de letras de A até R:\n");
	
	while((pontuacaoJogadorUm + pontuacaoJogadorDois) < 18) {
		System.out.println("É a vez do jogador " + jogadorDaVez + "\n");
		
		// Exibe o array
		
		for(int i = 0; i < letras.length ; i++) {
			for(int j = 0; j < letras[i].length; j++) {
				if(estaVirada[i][j] == false) {
					System.out.print(i + "" + j + "  ");
				} else {
					System.out.print(" " + letras[i][j] + "  ");
				}
			}
			System.out.println();
		}
		
		// Pede a primeira letra a ser virada
		
		System.out.println("Escolha a linha de sua primeira peça(número entre 0 e 5):");
		linhaPrimeiraEscolha = entrada.nextInt();
		System.out.println("Escolha a coluna de sua primeira peça(número entre 0 e 5):");
		colunaPrimeiraEscolha = entrada.nextInt();
		
		if((linhaPrimeiraEscolha < 0) || (linhaPrimeiraEscolha > 5) || (colunaPrimeiraEscolha < 0) || (colunaPrimeiraEscolha > 5) || (estaVirada[linhaPrimeiraEscolha][colunaPrimeiraEscolha] == true)) {
			do {
				System.out.println("Peça inexiste ou já está virada. Jogue novamente.\n");
				System.out.println("Escolha a linha de sua primeira peça(número entre 0 e 5:)");
				linhaPrimeiraEscolha = entrada.nextInt();
				System.out.println("Escolha a coluna de sua primeira peça(número entre 0 e 5:)");
				colunaPrimeiraEscolha = entrada.nextInt();
			} while((linhaPrimeiraEscolha < 0) || (linhaPrimeiraEscolha > 5) || (colunaPrimeiraEscolha < 0) || (colunaPrimeiraEscolha > 5) || (estaVirada[linhaPrimeiraEscolha][colunaPrimeiraEscolha] == true));
		}
		                                
		
		// Vira a primeira letra e mostra novamente o array
		
		estaVirada[linhaPrimeiraEscolha][colunaPrimeiraEscolha] = true;
		System.out.println("Você virou a letra " + letras[linhaPrimeiraEscolha][colunaPrimeiraEscolha] + ", agora ache seu par!\n");
		
		for(int i = 0; i < letras.length ; i++) {
			for(int j = 0; j < letras[i].length; j++) {
				if(estaVirada[i][j] == false) {
					System.out.print(i + "" + j + "  ");
				} else {
					System.out.print(" " + letras[i][j] + "  ");
				}
			}
			System.out.println();
		}
		
		// Pede a segunda letra a ser virada
		
		System.out.println("Escolha a linha de sua segunda peça(número entre 0 e 5):");
		linhaSegundaEscolha = entrada.nextInt();
		System.out.println("Escolha a coluna de sua segunda peça(número entre 0 e 5):");
		colunaSegundaEscolha = entrada.nextInt();
		
		if((linhaSegundaEscolha < 0) || (linhaSegundaEscolha > 5) || (colunaSegundaEscolha < 0) || (colunaSegundaEscolha > 5) || (estaVirada[linhaSegundaEscolha][colunaSegundaEscolha] == true)) {
			do {
				System.out.println("Peça inexiste ou já está virada. Jogue novamente.\n");
				System.out.println("Escolha a linha de sua segunda peça(número entre 0 e 5):");
				linhaSegundaEscolha = entrada.nextInt();
				System.out.println("Escolha a coluna de sua segunda peça(número entre 0 e 5):");
				colunaSegundaEscolha = entrada.nextInt();
			} while((linhaSegundaEscolha < 0) || (linhaSegundaEscolha > 5) || (colunaSegundaEscolha < 0) || (colunaSegundaEscolha > 5) || (estaVirada[linhaSegundaEscolha][colunaSegundaEscolha] == true));
		}
		
		// Vira a segunda letra
		
		estaVirada[linhaSegundaEscolha][colunaSegundaEscolha] = true;
		System.out.println("Você virou a letra " + letras[linhaSegundaEscolha][colunaSegundaEscolha] + "\n");
		
		// Compara se as duas letras são iguais
		
		if(letras[linhaPrimeiraEscolha][colunaPrimeiraEscolha] == letras[linhaSegundaEscolha][colunaSegundaEscolha]) {
			System.out.println("Parabéns jogador " + jogadorDaVez + ", você marcou um ponto!\n" );
			if(jogadorDaVez == 1) {
				pontuacaoJogadorUm++;
				jogadorDaVez = 1;
			} else {
				pontuacaoJogadorDois++;
				jogadorDaVez = 2;
			}
		} else {
			estaVirada[linhaPrimeiraEscolha][colunaPrimeiraEscolha] = false;
			estaVirada[linhaSegundaEscolha][colunaSegundaEscolha] = false;
			System.out.println("Você errou jogador " + jogadorDaVez + ", passe a vez ao seu adversário...\n");
			if(jogadorDaVez == 1) {
				jogadorDaVez = 2;
			} else {
				jogadorDaVez = 1;
			}
		}
	}
	
	// Exibe as pontuações e informa o ganhador
	
	System.out.println("Fim de jogo");
	System.out.println("Pontuação do jogador 1: " + pontuacaoJogadorUm);
	System.out.println("Pontuação do jogador 2: " + pontuacaoJogadorDois);
	
	if(pontuacaoJogadorUm > pontuacaoJogadorDois) {
		System.out.println("Parabéns Jogador 1, você é o ganhador!");
	} else if(pontuacaoJogadorDois > pontuacaoJogadorUm) {
		System.out.println("Parabéns Jogador 2, você é o ganhador!");
	} else {
		System.out.println("O jogo terminou empatado!");
	}
}  // fim do método iniciar jogo

} // fim da classe JogoDaMemoria[/code]

[code]
import java.util.Scanner;

public class TestaJogo {
public static void main(String[] args) {
JogoDaMemoria j = new JogoDaMemoria();
j.povoaJogo();
j.desviraLetras();
j.iniciarJogo();

	Scanner entrada = new Scanner(System.in); 
	System.out.println("Deseja jogar novamente? (1 para sim / qualquer digito para sair)");
	int reiniciaJogo = entrada.nextInt();
	
	while(reiniciaJogo == 1) {
		j.povoaJogo();
		j.desviraLetras();
		j.iniciarJogo();
		System.out.println("Deseja jogar novamente? (1 para sim / qualquer digito para sair)");
		reiniciaJogo = entrada.nextInt();
	}
}

}[/code]

Esse código é de um jogo da memória que eu fiz, ele pega todas aquelas letras e distribui…
Acredito que com algo parecido com isso vc consiga. :slight_smile:

Se a String puder ser qualquer sequencia de letras, não é difícil gerar um método que faça isso:

Deve ficar assim:

public String gerarString(int tamanho, String letras) { Random random = new Random(); StringBuilder saida = new StringBuilder(); for (int i = 0; i < tamanho; i++) { saida.append(letras.charAt(random.nextInt(letras.length))); } return saida.toString(); }

Uso:

String texto = gerarTexto(5, "ABCDEF");

Pessoal,

Em primeiro lugar muito obrigada pelas ajudas.

Vou pegar um pouquinho de cada e tentar montar o que preciso… Pq vou precisar criar algo utilizando, creio eu, Regex.
Eu vou criar um método que irá gerar uma string que será a senha do usuário, só que dentro dessa senha tem caracteres que serão obrigatórios…

Vou dar uma lida nos materiais e logo mais coloco os resultados…

Valew!!

Uma idéia seria gerar uma string com as letras do alfabeto + os numeros de 0a9 e fazer uma iteração de acordo com a quantidade de digitos que vc precise que a senha tenha, dentro deste for vc usaria math.random para gerar uma posição (de acordo com o número de caracteres da sua primeira string gerada, a alfanumérica) e então vc pega o valor da posição na string e vai adicionando a um outro objeto stringbuilder por exemplo até formar sua senha, vc faz isso facil com umas 4 linhas de codigo.

Fica ai mais uma dica pra vc pensar em como seria o mais facil pra vc.

[]'s

**Agora q vi o post do Vini, resume perfeitamente td q eu disse…rsrsrs.

Você pode usar o UUID.

import java.util.UUID;

public class GenerateUUID {
  
  public static final void main(String... aArgs){
    //generate random UUIDs
    UUID idOne = UUID.randomUUID();
    UUID idTwo = UUID.randomUUID();
    log("UUID One: " + idOne);
    log("UUID Two: " + idTwo);
  }
  
  private static void log(Object aObject){
    System.out.println( String.valueOf(aObject) );
  }
} 
1 curtida

Pessoal,

Valeu pela ajuda. Peguei um pouquinho de cada, dei uma estudade e consegui resolver o problema

Muito Obrigada!

Deixa o código para quem precisar.

Já que foi uma ajuda comunitária seria legal disponibilizar.

Abç