2012-07-19 78 views
1

现在,我一直在坚持通过这说明在Eclipse浏览器。错误以下错误看起来像一个错误:NumberFormatException异常:空

13:53:12,294 INFO [STDOUT] 30 
13:53:12,294 ERROR [[Expthsmon]] Servlet.service() for servlet Expthsmon threw exception 
java.lang.NumberFormatException: null 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at Expthsmon.doGet(Expthsmon.java:44) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
at java.lang.Thread.run(Unknown Source) 

我相信代码

int amountofnoon=0; 
    int amountofafternoon=0; 
    int noofnoon=0; 
    int noofafternoon=0; 
    String amountnoon=null; 
    String amountafternoon=null; 
    amountnoon=request.getParameter("amountnoon"); 
    amountafternoon=request.getParameter("amountafternoon"); 
    //if((amountnoon !=null)&&(amountafternoon !=null)) 

    amountofnoon=Integer.parseInt(amountnoon); 
    System.out.println(""+amountofnoon); 
    amountofafternoon=Integer.parseInt(amountafternoon); 
    System.out.println(""+amountofafternoon); 
的这部分

正在创建问题,其中amountofnoon和amountofafternoon应该是整数值。我该怎么办?

我也是从那里获得增值的代码的JSP部分:

<form name="expenditurefthsmon" action="Expthsmon"> 
<div align="center">Enter The Amount of Days Expenditure</div> 
<div align="center"><input type="text" name="amountnoon"></input></div> 
<div align="center">Enter The Amount of Nights Expenditure</div> 
<div align="center"><input type="text" name=amountafternoon"></input></div> 
<div align="center"><input type="submit" value="Calculate"></input></div>" 
</form> 
+3

问题是您的某个参数缺失。在尝试解析它之前,应该测试它是否存在。 – 2012-07-19 08:32:27

+0

值得一提的一点是,中午的金额正在打印正确的给定输入,而下午的金额不打印给定的输入。 – Mistu4u 2012-07-19 08:33:07

+0

最有可能的是,您的一个参数未定义,导致'null'传递给'parseInt' - 因此您的错误。 – 2012-07-19 08:33:23

回答

2

在HTML上面的代码错过了引号的name属性

<div align="center"><input type="text" name=amountafternoon"></input></div> 

应该比

<div align="center"><input type="text" name="amountafternoon"></input></div> 

其他,你必须永远从用户信任的输入,并始终在进入核心逻辑之前,验证它是否为无效值或空值。

2

amountnoon AND/OR amountafternoon具有价值null,您需要验证请求参数对其无效

1

你应该检查空值。例如

if(amountnoon != null){ 
    amountofnoon=Integer.parseInt(amountnoon); 
} 
1

最有可能的,这两个调用之一返回null

amountnoon=request.getParameter("amountnoon"); 
amountafternoon=request.getParameter("amountafternoon"); 

试图记录/它们传递给Integer.parseInt之前打印这两个值。

如果您将null传递给parseInt,您将得到一个NumberFormatException: null错误,如您所述。