java.lang.NumberFormatException: For input string: "" 如何解决

tujiyue 2008-04-16 08:21:09
//从模型中获取数据
OrderItemBeanForm oifrom = (OrderItemBeanForm)form;

String id = org.apache.commons.lang.StringUtils.defaultString(oifrom.getId());
String year=org.apache.commons.lang.StringUtils.defaultString(oifrom.getYear());
String month=org.apache.commons.lang.StringUtils.defaultString(oifrom.getMonth());
String day=org.apache.commons.lang.StringUtils.defaultString(oifrom.getDay());



//转换字符格式

id=new String(id.getBytes("ISO-8859-1"),"gb2312");
year=new String(year.getBytes("ISO-8859-1"),"gb2312");
month=new String(month.getBytes("ISO-8859-1"),"gb2312");
day=new String(day.getBytes("ISO-8859-1"),"gb2312");

long lid=new Long(Long.parseLong(id));
Date date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));

抛出异常为:java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Long.parseLong(Long.java:424)
java.lang.Long.parseLong(Long.java:461)
com.iwtxokhtd.action.CreateOrderItemAction.execute(CreateOrderItemAction.java:53)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


53行对应为:long lid=new Long(Long.parseLong(id));

...全文
24760 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxsurgar 2011-05-04
  • 打赏
  • 举报
回复
哎,还没有找到错误!
einfoally 2011-01-10
  • 打赏
  • 举报
回复
学习了
einfoally 2011-01-10
  • 打赏
  • 举报
回复
学习了
scottfied 2010-01-23
  • 打赏
  • 举报
回复
long lid=new Long(Long.parseLong(id)); 你这一句传过来的id是空 造成的了..空转化成long,出现转化异常.加上if(id != null||!id.equals(""){}
ligltc 2009-10-16
  • 打赏
  • 举报
回复
renzhenduoa
lihao1129 2009-08-07
  • 打赏
  • 举报
回复
呵呵,我刚才也出现这样的问题,后来发现是jsp页面的问题,你看看是不是
提示:先遍历再取值
zhangyunyue 2009-08-05
  • 打赏
  • 举报
回复
怎么搞的啊,我也出现了这个问题,根本都没有类型转换,也没输入空??
wen870105 2009-06-22
  • 打赏
  • 举报
回复
不能对 "" 进行转型的
lcjz99 2009-06-12
  • 打赏
  • 举报
回复
无效输入参数For input string 郁闷
li_d_s 2008-04-17
  • 打赏
  • 举报
回复
id如果是"abc",那楼主long lid=new Long(Long.parseLong(id));想得到什么结果呢?方法很简单,不管是在输入的地方也好,还是转换的地方也好,都需要判断转换前的字符串是否是合法的数字串
kokobox 2008-04-16
  • 打赏
  • 举报
回复
不用客气的o(∩_∩)o...,只是看你还没有解决问题,所以就跟着你的帖子回给你,在做项目过程中像这样的判断很多的,因为你不知道哪个数据会有问题

如果数据库的数据有问题或为空的时候导致你的程序不能运行,是很严重的问题,你只有在数据未使用之前做好判断,以防这样的事情发生。

tujiyue 2008-04-16
  • 打赏
  • 举报
回复
kokobox:感谢您对问题的耐心解答,你给的处理方法我试过,虽然能避免异常的产生,但并不能达到我的程序逻辑要求,最终的id,year,month,day取不得我手动设置的值,根源还是在于id,year,month,day还是为空,通过判断可避免异常,但只能取到默认的值,这个值并不是我所要的。所以才导致我把问题还是贴出来了!
kokobox 2008-04-16
  • 打赏
  • 举报
回复
怎么还是lz啊 我不是给你贴过代码了吗?

你先判断一下然后再用
Date date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));


例如:
Date date= new Date();
if(!"".equals(year)&&!"".equals(month)&&!"".equals(day)){
date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
}

就好啦
tujiyue 2008-04-16
  • 打赏
  • 举报
回复
注释过,结果还是一样
menhal 2008-04-16
  • 打赏
  • 举报
回复
空字符串“”不能转换为数字
richard_2010 2008-04-16
  • 打赏
  • 举报
回复
id=new String(id.getBytes("ISO-8859-1"),"gb2312");
此处注释掉看看。

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧