[Resolvido] erro ao ler tabela

Olá pessoal, olha só a confusao.
eu tenho aqui umas tabelas em DBF :thumbdown:
bom esse banco tem umas linhas em branco. e ai quando chega nessa linha da a seguinte msg de erro:

INFO [Thread-2] (_Quimera.java:39) - Criada pasta: files/1052/dprh nome: /br/com/link3/dp/convert/rh/quimera file:/home/vinny/workspace/l3convert/bin/br/com/link3/dp/convert/rh/quimera versão DBase: 2.03 Exception in thread "Thread-2" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:470) at java.lang.Integer.valueOf(Integer.java:554) at br.com.link3.dp.convert.rh.quimera.CentroCustoDao.next(CentroCustoDao.java:85) at br.com.link3.dp.convert.ConvertManager.export(ConvertManager.java:259) at br.com.link3.dp.convert.ConvertManager.processa(ConvertManager.java:132) at br.com.link3.dp.convert.MainForm$5.run(MainForm.java:349)

Acontece que eu to tratando esse campo no meu codigo da seguinte forma:

for (int i =0; i < this.dbfFile.getFieldCount(); i++) {
					DBFField field = this.dbfFile.getField(i);
					
						
						if ("CCUSTO".isEmpty()){
							fieldValue = ((String) record[i]).trim();
							centroCusto = "999";
							System.out.println("tem uma linha vazia aqui!!!!!  :-S");
						
						} else
							centroCusto = (fieldValue);
                                 }

Alguem sabe alguma outra forma de eu tratar isso?

vinnyparker,

Sugiro que voce valide se sua variavel esta nula antes de chamar o isEmpty ou qualquer outro metodo da sua String.

[quote=vcsmetallica]vinnyparker,

Sugiro que voce valide se sua variavel esta nula antes de chamar o isEmpty ou qualquer outro metodo da sua String. [/quote]

Como eu faço isso?

Pelo q eu vi, a exceção ta estourando em outra parte do seu código…

Em CentroCustoDao.java linha 85, vc ta chamando um Integer.valueOf(String)? essa String q vc ta passando para o valueOf está vazia “” então não consegue converter para número e lança a exceção…

Foi o q eu entendi do código de erro ai né… pode ser q eu esteja errado.

[quote=Poneis123]Pelo q eu vi, a exceção ta estourando em outra parte do seu código…

Em CentroCustoDao.java linha 85, vc ta chamando um Integer.valueOf(String)? essa String q vc ta passando para o valueOf está vazia “” então não consegue converter para número e lança a exceção…

Foi o q eu entendi do código de erro ai né… pode ser q eu esteja errado.[/quote]

sim, isso eu tb entendi… so nao sei eh como corrigir esse bagulho!

Fala vinnyparker,

Há várias maneiras de se fazer isso…

Uma é usando um try/cacth

try{

          x = Integer.valueOf(campostring);
}catch(Exception e){

          x = Integer.valueOf(0);
}

Ou um simples if como citaram acima:


// retorna um boolean
if(!campostring.isEmpty){
      x = Integer.valueOf(campostring);
}else{
    x = 0

}


// ou 

if(!"".equals(campostring) && campostring.length > 0){

      x = Integer.valueOf(campostring);
}else{
    x = 0

}

o leque é grande !

Faça uns testes, a questão é se não for um valor que possa ser convertido ou você para o processamento e lança um erro ou colocar um valor 0 e segue viajem, depende qual é a regra de negócio do seu método.

Qualquer coisa posta aí!

Abraço…

[quote=Zillo]Fala vinnyparker,

Há várias maneiras de se fazer isso…

Uma é usando um try/cacth

try{

          x = Integer.valueOf(campostring);
}catch(Exception e){

          x = Integer.valueOf(0);
}

Ou um simples if como citaram acima:


// retorna um boolean
if(!campostring.isEmpty){
      x = Integer.valueOf(campostring);
}else{
    x = 0

}


// ou 

if(!"".equals(campostring) && campostring.length > 0){

      x = Integer.valueOf(campostring);
}else{
    x = 0

}

o leque é grande !

Faça uns testes, a questão é se não for um valor que possa ser convertido ou você para o processamento e lança um erro ou colocar um valor 0 e segue viajem, depende qual é a regra de negócio do seu método.

Qualquer coisa posta aí!

Abraço…
[/quote]

Olá, eu resolvi isso da seguinte forma:
Segue o Codigo:


try {
			if (this.hasNext()) {
				this.recNo++;
				record = this.dbfFile.nextRecord(); //recebe os dados
				bean = new CentroCusto();
				
				String centroCusto = null;
				String nome = null;


for (int i =0; i < this.dbfFile.getFieldCount(); i++) {
					DBFField field = this.dbfFile.getField(i); //loop pra ler o conteudo do banco

					if(!record[i].equals(null)){     //Checa se o campo eh nulo ou nao

						if ("CCUSTO".equals(field.getName())) {
							fieldValue = ((String) record[i]).trim();
							centroCusto = (fieldValue);
							//centroCusto = this.dbfFile.getString("CCUSTO");
						}	


						if (!"nome".equals(field.getName())) {
							fieldValue = ((String) record[i]).trim();						
							nome = (fieldValue);


							//nome = this.dbfFile.getString("nome");
						}
					}	
				}
                        

Valeu pelas dicas pessoal!