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);
}
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!
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.
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");
}
}
}