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?
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)
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?
[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]