Integer.parseInt retornando excessao .NumberFormatException

3 respostas
programaçãojavamysql
R

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!!!);

}

}

3 Respostas

lucas.sampaio

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.

FearX

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

staroski

O maior valor que pode ser atribuído à uma variável do tipo int é [telefone removido].

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.

Criado 3 de dezembro de 2018
Ultima resposta 4 de dez. de 2018
Respostas 3
Participantes 4