preciso gerar um nome e sobre de uma pessoa, mais preciso gerar ele randomicamente e além disso, eu preciso gerar isso usando a tabela ascii, alguém pode me ajudar ? estou com dificuldades
preciso gerar um nome e sobre de uma pessoa, mais preciso gerar ele randomicamente e além disso, eu preciso gerar isso usando a tabela ascii, alguém pode me ajudar ? estou com dificuldades
public class TesteASCII {
public static void main(String[] args) {
//Transforma um conjunto de bytes e String
byte[] letra = {70,65,72,69,67,79,78};
System.out.println("+> " + new String(letra));
//Pega a letra referente a um inteiro
int x = 115;
System.out.println("-> " + (char)x);
x = 110;
System.out.println("-> " + (char)x);
x = 105;
System.out.println("-> " + (char)x);
x = 119;
System.out.println("-> " + (char)x);
//Pegar uma String, gerar Bytes e retornar String
String sTexto = "PortalJava.Com";
byte[] textoByte = sTexto.getBytes();
System.out.println("=> " + new String( textoByte ));
}
}
Achei esse código, parece que o que você vai precisar fazer é ler 2 coleções de números (uma para nome e outra para sobrenome) converter cada um desses números para char(tipo letra em java) e depois concatenar as letras.
Oi Rodrigo, tudo bem? Escrevi um código rapidinho aqui pra te ajudar a dar um start. Olha ele aqui:
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class TesteRandom {
public static void main(String[] args) {
// letras maisculas 65 - 90
// letras minúsculas 97 - 122
ThreadLocalRandom gerador = ThreadLocalRandom.current();
int tamanhoNome = gerador.nextInt(3, 10);
int tamanhoSobrenome = gerador.nextInt(3, 10);
char primeiraLetraNome = (char) gerador.nextInt(65, 90);
char primeiraLetraSobreNome = (char) gerador.nextInt(65, 90);
StringBuilder nome = new StringBuilder().append(primeiraLetraNome);
StringBuilder sobreNome = new StringBuilder().append(primeiraLetraNome);
for (int i = 1; i < tamanhoNome; i++) {
char letra = (char) gerador.nextInt(97, 122);
nome.append(letra);
}
for (int i = 1; i < tamanhoSobrenome; i++) {
char letra = (char) gerador.nextInt(97, 122);
sobreNome.append(letra);
}
System.out.println(nome + " " + sobreNome);
}
}
O problema do Random é que ele gera números sem definir um intervalo base, ou seja, eu não tenho um limite inferior, mas superior sim, então eu consigo usar esse ThreadLocalRandom
que consegue me ajudar nessa parte.
Na tabela ASCII (https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html) eu tenho ali os números que representam os caracteres do alfabeto. A ideia então é gerar números que convertidos para chars me deem uma letra, por isso o intervalo inferior é interessante, posso passar pra ele exatamente o intervalo de números que correspondem ao alfabeto.
Por baixo dos panos o ThreadLocalRandom
usa o Random. Então você tem um problema a menos.
Eu precisei gerar o tamanho do nome dinâmico também pra conseguir uma variância e não ficar preso a um número mágico no laço que completa o restante do nome.
O StringBuilder facilita as conversões, como estou gerando números que são convertidos para chars, o Builder consegue juntar todos os chars em uma string só sem precisar concatenar tudo.
Como eu disse, esse código é só um start, você pode melhorar com regras mais complexas.