GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Gerador aleatório de número PIS para realizar testes


#1

Oi pessoal, tudo bom ?

Segue em anexo o código que estou fazendo para gerar números aleatórios de PIS:

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random r = new Random();
		int num = 0;
		String numero = "";
		for (int i = 0; i<10; i++){
			num = r.nextInt(9);
			numero += Integer.toString(num);
		}
		int a = Integer.parseInt(String.valueOf(numero.charAt(0)));
		int b = Integer.parseInt(String.valueOf(numero.charAt(1)));
		int c = Integer.parseInt(String.valueOf(numero.charAt(2)));
		int d = Integer.parseInt(String.valueOf(numero.charAt(3)));
		int e = Integer.parseInt(String.valueOf(numero.charAt(4)));
		int f = Integer.parseInt(String.valueOf(numero.charAt(5)));
		int g = Integer.parseInt(String.valueOf(numero.charAt(6)));
		int h = Integer.parseInt(String.valueOf(numero.charAt(7)));
		int i = Integer.parseInt(String.valueOf(numero.charAt(8)));
		int j = Integer.parseInt(String.valueOf(numero.charAt(9)));
		System.out.println(numero);
		int soma = (3*a) + (2*b) + (9*c) + (8*d) + (7*e) + (6*f) + (5*g) + (4*h) + (3*i) + (2*j);
		System.out.println("soma = " + soma);
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		System.out.println(f);
		System.out.println(g);
		System.out.println(h);
		System.out.println(i);
		System.out.println(j);
		//int soma = (3*1) + (2*1) + (9*1) + (8*1) + (7*1) + (6*1) + (5*1) + (4*1) + (3*1) + (2*1);
		//System.out.println(soma%11);
		int resto = soma%11;
		System.out.println("resto = " + resto);
		int digitoVerificador = 11-resto;
		if (digitoVerificador == 10 || digitoVerificador == 11)
			digitoVerificador = 0;
		System.out.println("digitoVerificador = " + digitoVerificador);
		numero += String.valueOf(digitoVerificador);
		System.out.println(numero);
	}
}

O que estou fazendo de errado ? Estou pegando a saída gerada e utilizando um validador online, como esse aqui: http://www.cadcobol.com/pis_0001.htm, e nenhum número gerado está sendo válido ...

um abraço,

Gustavo


#2

Olha esse post http://aljug.blogspot.com/2009/05/fazendo-uma-simulacao-da-megasena-em.html e vê se ajuda.


#3

Cara, não entendi.

Eu crio um objeto Random, com o nome r, e depois crio um inteiro que muda seu valor a cada iteração do loop:

Random r = new Random();
		int num = 0;
		String numero = "";
		for (int i = 0; i<10; i++){
			num = r.nextInt(9);
			numero += Integer.toString(num);
		}

Gerando, assim, uma sequência de 10 números aleatórios.
Não entendi o que você quis dizer com usar Random ao invés de nextInt().


#4

Miguel, muito obrigado cara, mas descobri meu erro:

na verdade não há erro nenhum, apenas o validador online que eu estava usando aplicava uma máscara no número pis, fazendo com que não funcionasse.

Dúvida resolvida !

abraços


#5

Desculpa cara, vou ser mais claro... por exemplo:

Em cada variavel colocasse o x = new Random().nextInt(Inteiro);


#6