读书人

Sting部类数据装换为int类型出错

发布时间: 2013-03-22 09:49:50 作者: rapoo

Sting类型数据装换为int类型出错
我在用easyUI分页时,从前台传到后台page和rows两个参数。然而我将该值转换为int类型时出错,求解答。付源码(红色部分为出错部分):


String type=request.getParameter("type");
String p=request.getParameter("page");
String r=request.getParameter("rows");

int page=Integer.valueOf(p);
int rows=Integer.valueOf(r);

以下是出错信息:
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:417)
at java.lang.Integer.valueOf(Integer.java:554)
at tk.tangchao.servlet.JsonGenerate.doPost(JsonGenerate.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
at java.lang.Thread.run(Thread.java:619) javaweb easyUI Sting int j2ee
[解决办法]
用parseInt()试试。
int page = Integer.parseInt(p);
int row = Integer.parseInt(r);
[解决办法]
java.lang.NumberFormatException: null
已经提示你了,你传入的是null,而null是不能被转为int的
[解决办法]
异常提示的很清楚,你传入方法的Integer.valueOf的字符串==null
[解决办法]


if(null!=p&&!"".equals(p)){
int page=Integer.valueOf(p);
}
if(null!=r&&!"".equals(r)){
int rows=Integer.valueOf(r);
}
判断下就好,看下api里面的异常说明就明白了,不为空转换

[解决办法]
确定p和r不为null,一般在做转换的时候做个不为空的判断,避免异常
[解决办法]
因为你获得的p和r的值可能是null,而Integer.valueOf()类型转换是不能转换null的
[解决办法]
前面先加一个不为空的判断再去进行转换,空异常就是这么出现的。。。
[解决办法]
楼主debug一下吧,看看是不是你的
String p=request.getParameter("page");
String r=request.getParameter("rows");
有值,顺便在看看你的
String type=request.getParameter("type");
有值没有。
[解决办法]
引用:
用parseInt()试试。
int page = Integer.parseInt(p);
int row = Integer.parseInt(r);



String转int的函数是Integer.parseInt(String 对象)
[解决办法]
你看看从前台传到后台page和rows两个参数是否有正确传递了!
[解决办法]

int page = (null!=p && !"".equals(p))?Integer.valueOf(p):0;
int rows = (null!=r && !"".equals(r))?Integer.valueOf(r):0;

错误信息已经说得很明白了,p和r都是null
[解决办法]
引用:
Java code?12int page = (null!=p && !"".equals(p))?Integer.valueOf(p):0;int rows = (null!=r && !"".equals(r))?Integer.valueOf(r):0;
错误信息已经说得很明白了,p和r都是null

正解!!
[解决办法]
如果p, r输入均有值且正确,那么我没有猜错的话,应该不是这里报错。看看报错的行数JsonGenerate的51行
[解决办法]
还是写个非空判断吧
[解决办法]
引用:
但是我的分页效果能得到啊,而且我用System.out.print();都能输出,这个变量被赋值了,同时呢,还要报错,是这个样的!
试试做一下trim()处理。。。
[解决办法]
楼主做一个非空判断,然后用这个方法转换:
int page = Integer.parseInt(p);
int row = Integer.parseInt(r);
[解决办法]
多简单一事,
用common-lang包下的math下的
NumberUtils.isNumber();就ok了,是number了你在转int呗
[解决办法]

String type=request.getParameter("type");
String p=request.getParameter("page");
String r=request.getParameter("rows");

//你的错误提示是说这里不能把null转换成int,所以你的p或r肯定有一个值为null
//k.tangchao.servlet.JsonGenerate.doPost(JsonGenerate.java:51)
//错误提示在此类的51行,你看看这里的51行是page还是rows?
System.out.println("before p==" + p);
System.out.println("before r==" + r);
if (p == null
[解决办法]
"".equals(p)){
p = "0";
}
if (r == null
[解决办法]
"".equals(r)){
r = "0";
}
System.out.println("p==" + p);
System.out.println("r==" + r);
//这样应该就不会报这个错误了,试试
int page=Integer.valueOf(p);
int rows=Integer.valueOf(r);


[解决办法]
出错信息是
java.lang.NumberFormatException: null

说明是类型转换的时候,使用了null,所以,检查你的p,r的值是否为null.
并将
int page=Integer.valueOf(p);
int rows=Integer.valueOf(r);

改为:
int page=Integer.parseInt(p);
int rows=Integer.parseInt(r);

试试
[解决办法]
断点调试一下吧 你这个获取的值是空值..

读书人网 >Java Web开发

热点推荐