Erro em casting

Pessoal…
Estou tendo problemas com a conversão de tipos.

int ano = Integer.parseInt(valor);

Esta sempre retornando um erro dizendo que tem uma string, mesmo o valor sendo numerico (ex. “1997”). Acredito que n´~ao exista uma outra maneira de fazer o casting em java.
Os dados estao vindo de um arquivo texto - vindo de um db.
Pode haver algum erro ai?
Como corrgigir isto? devo criar um metodo que encontre o numeros e crie um novo int?
Qua vcs acham?

Voce pode postar o stacktrace para podermos entender melhor o erro?

Faz assim talvez tenha espaços e da uma exceção

java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:489)
	at java.lang.Integer.parseInt(Integer.java:518)
	at com.br.util.TransfProtocolo.trataLinha(TransfProtocolo.java:96)
	at com.br.util.TransfProtocolo.leArq(TransfProtocolo.java:21)
	at servlets.util.ServTransf.doGet(ServTransf.java:34)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)
java.lang.NumberFormatException: For input string: ""

tem certeza que ta passando o valor para o Integer.parseInt(valor); ??

Isso ocorre por que a sua variavel valor está vindo vazio.
Certifique-se para que quando a variavel esta vazia não seja feito o parse, ou seja, faça um if(valor.equals("")) não faz a conversão.
Entendeu?

Como esta estrutura desse arquivo?

Ele soltou essa exception prq vc tentou transformar String vazia em Inteiro


if (srt =="")
 //nao transforma
else
  int ano = Integer.parseInt(valor);
if (srt =="") { } 

seria str.equals(""); né? =P

até!

Depende vc quer comparar tipos ou se ambos objetos estao apontando para o mesmo de endereço de memória?

qndo faz

if (srt =="")
esta comparando se o tipos são iguais

if (str.equals(""))
comparando se str aponta para um endereço de memoria contem o conteudo""

[quote=Deh] if (srt =="") { }

seria str.equals(""); né? =P

até![/quote]

Certo vou testar aqui gente.

Valeu

[quote=ramilani12]Depende vc quer comparar tipos ou se ambos objetos estao apontando para o mesmo de endereço de memória?

qndo faz

if (srt =="")
esta comparando se o tipos são iguais

[/quote]

No caso acima vc esta comparando se dois objetos apontam pro mesmo endereço, ou seja, sempre vai da false.
Para comparar tipos existe o operador instanceof.

Nesse caso vc esta compando se dois objetos são equivalentes, e não se o str aponta para um determinado endereço.

Sempre me confundo com esses caras!
Então o operador == compara as referências?
E equals() compara se são do mesmo atributo?

[quote=furutani][quote=ramilani12]Depende vc quer comparar tipos ou se ambos objetos estao apontando para o mesmo de endereço de memória?

qndo faz

if (srt =="")
esta comparando se o tipos são iguais

[/quote]

No caso acima vc esta comparando se dois objetos apontam pro mesmo endereço, ou seja, sempre vai da false.
Para comparar tipos existe o operador instanceof.

Nesse caso vc esta compando se dois objetos são equivalentes, e não se o str aponta para um determinado endereço.[/quote]