Integer.parseInt retornando excessao .NumberFormatException

Boa tarde a todos ,
Desculpe se estou no topico errado ou processo errado , sou novo no forum e precisava da ajuda de voces .
Estou com um projeto de um curso com um problema, o intuito é ler o cpf que foi digitado e pesquisar no banco mysql, porem a função parse int nao consegue ler quando digito todos numeros do cpf , ela lé somente 9 digitos , mais que isso retorna .NumberFormatException.
O comando principal aonde eu acredito que esteja o problema segue abaixo .

JButton btnBuscar = new JButton(“BUSCAR”);
btnBuscar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int Cpf = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o CPF do cliente: "));
CliControl.BuscarDados(Cpf, CliBin);
jtfNome.setText(CliBin.getNome());
jtfCpf.setText(CliBin.getCpf());
jtfDatanasc.setText(CliBin.getDatanasc());
jtfRg.setText(CliBin.getRg());
jtfEndereco.setText(CliBin.getEndereco());
jtfBairro.setText(CliBin.getBairro());
jtfCidade.setText(CliBin.getCidade());
jtfEstado.setText(CliBin.getEstado());
jtfCnh.setText(CliBin.getCnh());
jtfCodigoLoja.setText(CliBin.getCodigoLoja());
}
});


public void BuscarDados(int Cpf,ClienteBin CliBin) {
conexao Concessionaria = new conexao();

try {

Connection ExConn = (Connection) Concessionaria.abrirBDConn();
Statement stmt = (Statement) ExConn.createStatement();
String sSQL = "SELECT * FROM Concessionaria.clientes WHERE Cpf = "+Cpf ;
ResultSet rs = stmt.executeQuery(sSQL);

while(rs.next())
{
//CliBin.setid(rs.getInt("id"));
CliBin.setNome(rs.getString("Nome"));
CliBin.setCpf(rs.getString("Cpf"));
CliBin.setDatanasc(rs.getString("Datanasc"));
CliBin.setRg(rs.getString("Rg"));
CliBin.setEndereco(rs.getString("Endereço"));
CliBin.setBairro(rs.getString("Bairro"));
CliBin.setCidade(rs.getString("Cidade"));
CliBin.setEstado(rs.getString("Estado")); 
CliBin.setCnh(rs.getString("Cnh"));
CliBin.setCodigoLoja(rs.getString("Loja_codigoLoja")); 

}

stmt.close();
Concessionaria.fecharBDConn();
}catch(Exception e){
JOptionPane.showMessageDialog(null,“Os dados não puderam ser encontrados!!!”);
}
}

Se digitar o CPF formatado com ponto e hífen ou deixar vazio ou só mesmo obter o valor do JtextField então o valor será considerarado como String.

O caso do NumberFormat pode ser isso ou pode ser que esteja estourando o tamanho de um int. Nesse caso, tu tem que mudar pra long por ser maior do que int.

1 curtida

Formate seu código usando o botão </>. Assim podemos entender melhor.

O maior valor que pode ser atribuído à uma variável do tipo int é 2147483647.

Mas tem outro problema, você não deveria usar um tipo numérico para representar o CPF pois há CPFs que começam com zero, utilize String.