Problemas utilizando parseInt

6 respostas
EuclidesFilizola

Ola pessoal, gostaria de saber o que há de errado nesse meu método.

public ArrayList<Integer> ListarCPF() {

		try {
			conn = this.getConexao();

			PreparedStatement stmt = conn
					.prepareStatement("SELECT CPF_CNPJ FROM FRENTE ORDER BY CHAVE ");

			// executa um select
			ResultSet rs = stmt.executeQuery();
						
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
			
			// itera no ResultSet

		 int n=0;
			while (rs.next()) {
		
				
	// transforma os cpf em número inteiros
		
      n = Integer.parseInt(rs.getString(1));	 
			
				// adiciona em cada posição do array o cpf
				// de acordo com a posição da chave

 				ListaCPF.add(n);
			}
			for(int i =0; i< ListaCPF.size(); i++){
				System.out.println(ListaCPF.get(i));
			
			
			}
			rs.close();
			stmt.close();
			conn.close();

		} catch (SQLException sqlex ) {
			sqlex.printStackTrace();
			
		} catch (NumberFormatException e ) {
			e.printStackTrace();
		}
		return ListaCPF;
	}

o erro que ele retorna:

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at br.gov.adagri.ConexaoMSAccess.ListarCPF(ConexaoMSAccess.java:151)

at br.gov.adagri.ComparacaoDB.main(ComparacaoDB.java:24)

… detalhe , o campo “CPF_CNPJ” é do tipo texto de uma tabela em ACCESS.

alguem ae pra ajudar ???

6 Respostas

italo.vendrameto

possiveis problemas são

1 - existe algum CPF em branco
2 - existe algum CPF com espações no inicio ou no fim

Soluções:

if (!"".equals(rs.getString(1).trim())) { n = Integer.parseInt(rs.getString(1).trim()); ListaCPF.add(n); }

thiago.correa

italo.vendrameto:
possiveis problemas são

1 - existe algum CPF em branco
2 - existe algum CPF com espações no inicio ou no fim

Soluções:

if (!"".equals(rs.getString(1).trim())) { n = Integer.parseInt(rs.getString(1).trim()); ListaCPF.add(n); }


Não somente isso, pode haver pontos ou traços o que é comum no CPF, o ideal seria criar uma regex para retirar os pontos e/ou traços

T

Um CPF ou CNPJ tem mais dígitos que um int; você teria de usar um long. Talvez haja pontos, traços ou barras no CPF ou CNPJ.

long n = Long.parseLong(rs.getString(1).replaceAll ("[ ./-]", ""));
thiago.correa

Exemplo do que eu falei:

String texto = rs.getString(1);
int cpf = 0;
if (texto != null && !"".equals(texto) {
    texto = texto.replaceAll("\.|-",""); //retira pontos e traços
    cpf = Integer.parseInt(texto);
}

Se bem que acho que você deveria manter números mesmo pois há cpfs com zeros na frente, assim como o meu :smiley:

EuclidesFilizola

amigos

não há traços nem pontos, nem barras

estão todos juntos , exemplo: cpf: [telefone removido]…

e… questão de int e long… tbm não é …

dpois q eu utilizei o trim… ocorreu o seguinte erro.

public ArrayList<Long> ListarCPF() {

		try {
			conn = this.getConexao();

			PreparedStatement stmt = conn
					.prepareStatement("SELECT CPF_CNPJ FROM FRENTE ORDER BY CHAVE ");

			// executa um select
			ResultSet rs = stmt.executeQuery();
						
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
			
			// itera no ResultSet

		 
		 
		
			while (rs.next()) {
						
	// transforma os cpf em número inteiros
			
				    if (!"".equals(rs.getString(1).trim())) {  
					      Long   n = Long.parseLong(rs.getString(1).trim());   
					          ListaCPF.add(n);   
					    }  
				
			
				// adiciona em cada posição do array o cpf
				// de acordo com a posição da chave

 				
			}
			
			for(int i =0; i< ListaCPF.size(); i++){
				System.out.println(ListaCPF.get(i));
			
			
			}
			rs.close();
			stmt.close();
			conn.close();

		} catch (SQLException sqlex ) {
			sqlex.printStackTrace();
			
		} catch (NumberFormatException e ) {
			e.printStackTrace();
		}
		return ListaCPF;
	}

aparece o seguinte:

java.sql.SQLException: No data found

at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)

at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)

at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)

at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)

ConexaoMSAccess.ListarCPF(ConexaoMSAccess.java:153)

ComparacaoDB.main(ComparacaoDB.java:24)

onde ele aponta o erro:

Long   n = Long.parseLong(rs.getString(1).trim());
EuclidesFilizola

EuclidesFilizola:
Ola pessoal, gostaria de saber o que há de errado nesse meu método.

public ArrayList<Integer> ListarCPF() {

		try {
			conn = this.getConexao();

			PreparedStatement stmt = conn
					.prepareStatement("SELECT CPF_CNPJ FROM FRENTE ORDER BY CHAVE ");

			// executa um select
			ResultSet rs = stmt.executeQuery();
						
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
			
			// itera no ResultSet

		 int n=0;
			while (rs.next()) {
		
				
	// transforma os cpf em número inteiros
		
      n = Integer.parseInt(rs.getString(1));	 
			
				// adiciona em cada posição do array o cpf
				// de acordo com a posição da chave

 				ListaCPF.add(n);
			}
			for(int i =0; i< ListaCPF.size(); i++){
				System.out.println(ListaCPF.get(i));
			
			
			}
			rs.close();
			stmt.close();
			conn.close();

		} catch (SQLException sqlex ) {
			sqlex.printStackTrace();
			
		} catch (NumberFormatException e ) {
			e.printStackTrace();
		}
		return ListaCPF;
	}

o erro que ele retorna:

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at br.gov.adagri.ConexaoMSAccess.ListarCPF(ConexaoMSAccess.java:151)

at br.gov.adagri.ComparacaoDB.main(ComparacaoDB.java:24)

… detalhe , o campo “CPF_CNPJ” é do tipo texto de uma tabela em ACCESS.

alguem ae pra ajudar ???

… ? ? ?

Criado 6 de novembro de 2008
Ultima resposta 6 de nov. de 2008
Respostas 6
Participantes 4