紧急提问………关于Ingeter.parseInt()的问题
/**
* 转换失败则自动返回 i
*
* @param s
* @return i
*/
public static int StringToInt(String s, int i)
{
if (s != null || !s.equalsIgnoreCase(""))
{
try
{
i = Integer.parseInt(s);
}
catch (Exception e)
{
//
}
return i;
}
else
{
return i;
}
}
但是调用的时候
int ID=Check.StringToInt(request.getParameter("ID"),-1);
如果ID非数字的话就报错
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: null
root cause
java.lang.NumberFormatException: null
!!
明明已经catch了阿!!为什么还会报错?
Struts的Action中。。。请问各位大人如何过滤非int的字符。。。
问题点数:0、回复次数:8Top
1 楼EXvision(EXvision)回复于 2005-03-01 01:56:18 得分 0
上面打错了
是
public static int StringToInt(String s, int i)
{
if (s != null && !s.equalsIgnoreCase(""))
{
try
{
i = Integer.parseInt(s);
}
catch (Exception e)
{
//
}
return i;
}
else
{
return i;
}
}
请大家帮忙阿
Top
2 楼singinthesky(ichoose)回复于 2005-03-01 08:10:39 得分 0
试试if (s != null && !"".equalsIgnoreCase(s))Top
3 楼vgvg(上帝在关闭一扇窗的同时,在别处打开了一扇门。可这扇门迟迟不开,我只好破门而入!)回复于 2005-03-01 08:20:38 得分 0
try
{
i = Integer.parseInt(s);
}
catch (Exception e)
{
//
}
return 0;
Top
4 楼hxzg001(丢掉幻想,准备辞职)回复于 2005-03-01 08:46:51 得分 0
没有问题Top
5 楼wts(天胜)回复于 2005-03-01 08:53:49 得分 0
if (s != null || !s.equalsIgnoreCase(""))
我的理解,这里是两个条件相或,如果第一个条件满足的话,也就是说第一个条件返回true的话,第二个条件并不会再进行判断,也就是说!s.equalsIgnoreCase(""))不执行了。
所以如果你传递进来"abc",满足了第一个条件,程序就会向下执行,然后到了i = Integer.parseInt(s);就会出错了。Top
6 楼kingmaxno1(学会飞翔)回复于 2005-03-01 09:12:58 得分 0
楼主,这说明你的错误是在进入try{...}catch{}块之前,报的错,
if (s != null || !s.equalsIgnoreCase(""))
错在这里,如果传进来的值是null,s.equalsIgnoreCase("")就会报错,
有两种改法:
1.改成 "".equalsIgnoreCase(s)
2.改成 if (s != null | !s.equalsIgnoreCase(""))
Top
7 楼magie16036936(magie)回复于 2005-03-01 09:35:46 得分 0
同意楼上~
你的原因是在if条件判断上出的问题。好好检查那里!Top
8 楼Times2001(回车)回复于 2005-03-01 10:18:23 得分 0
程序没问题Top




