这是我写在JAVA  BEAN 中的一段代码,可是无论如何调试,也过不去,一会儿好了,一会儿又不行了,请问是为什么,是不是逻辑代码不能放在BEAN中呢?  static public boolean isUsed(String StrLimit, int PageLimit) {
// if(StrLimit.trim().equals("")){return false;}    int iEndIndex = -1;
    String NewStrLimit = StrLimit;
    int si;
    String sLimit = "";
   // String iStartIndex = "100";
    si = -50;
    boolean IsHas = false;    while (!IsHas) {
      si = iEndIndex;
      iEndIndex = NewStrLimit.indexOf(',', si + 1);
      if (iEndIndex <= 0) {
        return false;
      }
      sLimit = (String) NewStrLimit.substring(si + 1, iEndIndex);
      if (Integer.parseInt(sLimit) == PageLimit) {
        return true;
        //break;
      }
    }
    return false;
  }

解决方案 »

  1.   

    你说得不过是什么意思?报什么exception?
      

  2.   

    Integer.parseInt(sLimit)
    这句,如果你输入的字符串不是数字的话,会报java.lang.NumberFormatException。
    如果要保证不错,需要catch这个exception才行。
      

  3.   

    其实功能很简单的,
    String StrLimit  //一个字符串,格式(1,2,5,)代表的是一个权限.
    int PageLimit  //要使用的权限.如果这个权限在上面的字符串中,那么就返回TRUE,否则,返回FALSE,
    在回答你们的提问时,我想到好像可以用indexof函数来实现这个功能,呵呵,我试试.
    下面是报的异常,StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionjava.lang.NumberFormatException: For input string: ""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 WuZhouYFFWeb.ViewFile.ApplyBean.LimitBean.isUsed(LimitBean.java:57) at WuZhouYFFWeb.ViewFile.ApplyBean.LimitBean.reduceLimit(LimitBean.java:74) at org.apache.jsp.main.sys.OperatorManage_jsp._jspService(OperatorManage_jsp.java:133) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 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)
      

  4.   

    果真是NumberFormatException 
    要不你就catch,要不就换一种实现方式吧。
      

  5.   

    try{
      iValue = Integer.parseInt(sLimit);
       
    }catch(NumberFormatException  e){iValue = -1;}if (iValue  == PageLimit) {
            return true;
            //break;
          }
      

  6.   

    问题是,我还没有运行到if (Integer.parseInt(sLimit) == PageLimit) 这里呀,运行到iEndIndex = NewStrLimit.indexOf(',', si + 1);就跳出了,而且在上面一句si = iEndIndex;中的iEndIndex值就已经不对了呀,本来应该是-1,却变成0了呀.为什么会这样呢?
      

  7.   

    给你重写了。    static public boolean isUsed(String StrLimit, int PageLimit) {
            boolean notLimit = false;
            
            if (StrLimit != null && !"".equals(StrLimit)) {
                String[] strArr = StrLimit.split(",");
                String temp = null;
                for (int i = 0; i < strArr.length; i++) {
                    temp = strArr[i];
                    if (temp.equals(Integer.toString(PageLimit))) {
                        notLimit = true;
                    }
                }
            }
            
            return notLimit;
          }
      

  8.   

    回复人: shengtian(圣天) ( ) 信誉:100  2005-12-08 17:07:00  得分: 0  
     
       问题是,我还没有运行到if (Integer.parseInt(sLimit) == PageLimit) 这里呀,运行到iEndIndex = NewStrLimit.indexOf(',', si + 1);就跳出了,而且在上面一句si = iEndIndex;中的iEndIndex值就已经不对了呀,本来应该是-1,却变成0了呀.为什么会这样呢?
      
    ///////////////////////如果不给我实际看你的数据我是回答不了这个问题的。
    不过我要提醒你一下,你这里是一个循环,第二次走到这个循环里面的时候iEndIndex值是被变了的。
    你要明确你是第几次走到循环里面?
     
      

  9.   

    谢谢你,高手,我的QQ是10014618,请您加我,好吗?我的MSN是:moistpeak.如果有问题的时候,想请您帮助解决,当然,分数会多给你的.
      

  10.   

    不客气啦。 需要的话,提问题的时候顺便给我发纸条好就OK了。
    我不是一直在CSDN上,如果依赖我的话,会耽误你问题解决的。