Fala ai pessoal, sou iniciante em java e gostaria de saber como eu posso pegar 16 digitos aleatorios dentro dessa string:
String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
grato
Fala ai pessoal, sou iniciante em java e gostaria de saber como eu posso pegar 16 digitos aleatorios dentro dessa string:
String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
grato
Usa o método String.charAt(int) passando como parâmetro um número aleatório que seja, no máximo, String.length()
consegui fazer o seguinte:
import java.util.Random;
public class RandomString
{
public static void main(String[] args)
{
String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuffer sb=new StringBuffer();
Random random = new Random();
for (int i=0;i<16;++i)
sb.append(str.charAt(random.nextInt(16)));
System.out.print(sb.toString());
}
}
Eu consegui fazer, so nao entendi bem porque no random.nextInt() o valor nao pode passar de 38, um valor acima disso retorna um erro no compilador…
"sb.append(str.charAt(random.nextInt(16))); "
Tenta isso: sb.append(str.charAt(random.nextInt(str.length() - 1)));
Ai ele vai pegar qualquer valor dentro da String.
E vc se quiser jogar isso em uma String normal, é só usar str += str.charAt(random.nextInt(str.length() - 1));
Ele concatena um char no final da string.
consegui, muito obrigado !
o pessoal é ligeiro, o tempo que eu fui fazer já mandaram a resposta…
de qq forma, vou postar um outro jeito de fazer…
public class Cadeia {
public static void main(String [] args) {
String cadeia = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < 16; i++){
double rand = Math.round(Math.random()*35);
int letra = (int)rand;
System.out.println((i+1) + ". " + cadeia.charAt(letra));
}
}
}