Estou tentando imprimir um código de barras usando o modelo EAN13, é bem menor que o modelo padrão code128, ele precisa de 12 números para ser uma string valida. Estava olhando o método Random consegui fazer bem com números pequenos, mas para números dessa grandeza não consigo. Usei o método nextLong, mas ele fica me retornando um erro de valor que não é compatível mesmo os valores também sendo long. Alguém sabe como fazer isso?
Obs: os números tem que ser positivos se não dá erro também na hora de gerar o código de barras.
Você quer 12 dígitos aleatórios então ? Porque dígito e número são coisas diferentes.
Verdade vou editar, quero 12 números aleatórios.
System.out.println("123456789012 - Doze Dígitos \n---------------------------");
for (int i = 0; i < 10; i++) {
long dozeDigitos = (long) (100000000000l + Math.random() * 899999999999l);
System.out.println(dozeDigitos);
}
import java.util.Random;
public class Exemplo {
public static void main(String[] args) {
String numero = gerarDigitosAleatorios(12);
System.out.println(numero);
}
private static String gerarDigitosAleatorios(int digitos) {
StringBuilder text = new StringBuilder();
Random random = new Random();
for (int i = 0; i < digitos; i++) {
text.append(random.nextInt(10)); // gerar um número aleatório entre 0 e 9
}
return text.toString();
}
}
Valeu cara, muito obrigado meu método estava muito parecido com o seu, vi pelo seu que meu erro foi não converter a sentença em (long).
Muito obrigado, pelo seu método deu certinho também.
Você realmente precisa converter para long?
Se o seu código iniciar com zero, não vai funcionar.
Hum entendo, pelos testes que eu fiz esta funcionando normal, tentei tanto pelo seu quanto pelo do amigo a cima, ambos funcionam. Na verdade não entendi o porque da conversão se todas as variáveis estão em long, mas resolveu o problema.