2
respostas

“The method parseInt(String) in the type Integer is not applicable for the arguments (char).”

Quero validar um cpf que pode vim nessas formas do TextField: (111.111.111-11)(111.111.111.11)(11122233344) Mas quando estou tentando converter a stringCPF, que foi capturada do TextField e mandada pra classe que faz a validação, para um vetor de inteiros com o parseInt, mas fica aparecendo esse erro : "The method parseInt(String) in the type Integer is not applicable for the arguments (char)." Esse é o método dentro da classe para fazer a conversão. Como resolver o erro?

public void converteStringParaInt(){

digitosCPF = new int[11]; 
stringCPF = cpf.toCharArray();

for (int i= 0; i < stringCPF.length; i++) {
    if(Character.isDigit(stringCPF[i])) {
        digitosCPF[i] = Integer.parseInt(stringCPF[i]); 
    }
}

}

2 respostas

Oie Franciane, tudo bem contigo?

Para fazer essa validação, ao invés de fazer todo esse processo de conversão acredito que seria melhor usar um "regex". O "regex" ou "expressão regular" é uma forma de fazer buscas, validações e outras coisas. Nesse caso seria para uma validação e usando o regex a validação seria feita em uma String, sem necessidade de conversão.

Fiz um código que faz essa validação:

String regex = "^\\d{3}\\.\\d{3}\\.\\d{3}\\-\\d{2}$|\\d{3}\\.\\d{3}\\.\\d{3}\\.\\d{2}$|\\d{11}$"; // esse código válida cpfs nos formatos: 111.111.111-11, 111.111.111.11, 11111111111

String cpf = "123.456.789.00";
String cpf2 = "123.456.789-00";
String cpf3 = "12345678900";

Pattern pattern = Pattern.compile(regex);
Matcher matcher1 = pattern.matcher(cpf);
Matcher matcher2 = pattern.matcher(cpf2);
Matcher matcher3 = pattern.matcher(cpf3);

if(matcher1.matches()) {
    System.out.println(true);
} else {
    System.out.println(false);
}

Qualquer problema fico a disposição :)

Bons estudos!

Eu fiz a validação do formato vc disse, mas quero fazer também aquela validação lógica do cpf. Como fala nesse site. https://www.calculadorafacil.com.br/computacao/validar-cpf