Boa tarde, estou no meu primeiro semestre de CC e tenho que fazer um programa que calcule os 2 últimos dígitos de um CPF, como por exemplo = se digitar = 222333666, sair 222333666-38, ate ai tudo bem, porem as vezes o programa manda um = 0 112233445 ; -33 192837 135792468, etc…, e não estou conseguindo pegar apenas os últimos 9 dígitos, ai o código, espero que não esteja muito ruim…
Obs; Quando vai digitar o cpf tem que dar um espaço primeiro.
identar texto pré-formatado por 4 espaços
import java.util.Scanner;
public class CPF{
public static void main(String args[]){
//Vaariaveis
String Cpf;
//Entrada
Scanner entrada = new Scanner(System.in);
Cpf = entrada.nextLine();
//Processamento e Saida(A = 1° Digito e B = 2°Digito)
/*------------------------------------------------1° Digito-----------------------------------------*/
//Mutiplicaçoes = 10 9 8 7 6 5 4 3 2
//Variaveis
int Primeiro_Digito,Resto;
char AD1,AD2,AD3,AD4,AD5,AD6,AD7,AD8,AD9,AD10;
int AM1,AM2,AM3,AM4,AM5,AM6,AM7,AM8,AM9;
//PROCESSAMENTO
//Retira Numeros do CPF //Mutiplica numeros de acordo com as exigencias
AD1 = Cpf.charAt(1); AM1 = (AD1 - 48) * 10;
AD2 = Cpf.charAt(2); AM2 = (AD2 - 48) * 9;
AD3 = Cpf.charAt(3); AM3 = (AD3 - 48) * 8;
AD4 = Cpf.charAt(4); AM4 = (AD4 - 48) * 7;
AD5 = Cpf.charAt(5); AM5 = (AD5 - 48) * 6;
AD6 = Cpf.charAt(6); AM6 = (AD6 - 48) * 5;
AD7 = Cpf.charAt(7); AM7 = (AD7 - 48) * 4;
AD8 = Cpf.charAt(8); AM8 = (AD8 - 48) * 3;
AD9 = Cpf.charAt(9); AM9 = (AD9 - 48) * 2;
//Resto da divisao da soma das multiplicaçoes por 11
Resto = (AM1+AM2+AM3+AM4+AM5+AM6+AM7+AM8+AM9)%11;
//SAIDA
if (Resto < 2){
Primeiro_Digito = 0;
/*------------------------------------------------2° Digito-----------------------------------------*/
//Mutiplicaçoes = 11 10 9 8 7 6 5 4 3 2
//Variaveis
int Segundo_Digito,RestoB;
char BD1,BD2,BD3,BD4,BD5,BD6,BD7,BD8,BD9;
int BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8,BM9,BM10;
//PROCESSAMENTO
//Retira Numeros do CPF //Mutiplica numeros de acordo com as exigencias
BD1 = Cpf.charAt(1); BM1 = (BD1 - 48) * 11;
BD2 = Cpf.charAt(2); BM2 = (BD2 - 48) * 10;
BD3 = Cpf.charAt(3); BM3 = (BD3 - 48) * 9;
BD4 = Cpf.charAt(4); BM4 = (BD4 - 48) * 8;
BD5 = Cpf.charAt(5); BM5 = (BD5 - 48) * 7;
BD6 = Cpf.charAt(6); BM6 = (BD6 - 48) * 6;
BD7 = Cpf.charAt(7); BM7 = (BD7 - 48) * 5;
BD8 = Cpf.charAt(8); BM8 = (BD8 - 48) * 4;
BD9 = Cpf.charAt(9); BM9 = (BD9 - 48) * 3;
BM10 = Primeiro_Digito * 2;
RestoB = (BM1+BM2+BM3+BM4+BM5+BM6+BM7+BM8+BM9+BM10)%11;
//SAIDA
if (RestoB < 2){
Segundo_Digito = 0;
System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
}
else if (RestoB >= 2){
Segundo_Digito = 11 - RestoB;
System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
}
}
else if (Resto >= 2){
Primeiro_Digito = 11 - Resto;
/*------------------------------------------------2° Digito-----------------------------------------*/
//Mutiplicaçoes = 11 10 9 8 7 6 5 4 3 2
//Variaveis
int Segundo_Digito,RestoB;
char BD1,BD2,BD3,BD4,BD5,BD6,BD7,BD8,BD9;
int BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8,BM9,BM10;
//PROCESSAMENTO
//Retira Numeros do CPF //Mutiplica numeros de acordo com as exigencias
BD1 = Cpf.charAt(1); BM1 = (BD1 - 48) * 11;
BD2 = Cpf.charAt(2); BM2 = (BD2 - 48) * 10;
BD3 = Cpf.charAt(3); BM3 = (BD3 - 48) * 9;
BD4 = Cpf.charAt(4); BM4 = (BD4 - 48) * 8;
BD5 = Cpf.charAt(5); BM5 = (BD5 - 48) * 7;
BD6 = Cpf.charAt(6); BM6 = (BD6 - 48) * 6;
BD7 = Cpf.charAt(7); BM7 = (BD7 - 48) * 5;
BD8 = Cpf.charAt(8); BM8 = (BD8 - 48) * 4;
BD9 = Cpf.charAt(9); BM9 = (BD9 - 48) * 3;
BM10 = Primeiro_Digito * 2;
RestoB = (BM1+BM2+BM3+BM4+BM5+BM6+BM7+BM8+BM9+BM10)%11;
//SAIDA
if (RestoB < 2){
Segundo_Digito = 0;
System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
}
else if (RestoB >= 2){
Segundo_Digito = 11 - RestoB;
System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
}
}
}
}