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

4 respostas
G

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

4 Respostas

MiguelCP

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

G

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().

G

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

MiguelCP

Desculpa cara, vou ser mais claro… por exemplo:

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

Criado 9 de dezembro de 2010
Ultima resposta 9 de dez. de 2010
Respostas 4
Participantes 2