RANDY

          Nothing is difficulty if you put your heat into it!!!
          posts - 3, comments - 1, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          字符串反轉遇到的問題

          Posted on 2006-10-09 22:24 劉恒濤 閱讀(519) 評論(0)  編輯  收藏
            一同學問了一個字符串反轉的問題!開始覺得很簡單的!
            一種思路就是獲得字符串在將它轉換成為字符串數組在用循環將他輸出就可以了!
           我作了兩個頁面,一個用于輸入,一個用于處理;
            我最初是這么寫的:
             我正序輸出時是正確的即
          <%
          ? for(int i=0;i<=s.lenth.i++)
          %>
          第一次嘗試:
           ? <%
          ? String fanzhuan=request.getParameter("fanxu");
          ????? if((fanzhuan.length()==0)&&(fanzhuan=="")){
          ???? out.print("TextField can't be null");
          ???????? }
          ????? else{
          ??char s[]=fanzhuan.toCharArray();
          ??String fanzhuan2="";
          ??int j=s.length;
          ??for(int i=j;i>0;i--)//老出越界的錯誤暈!
          ??{
          ???fanzhuan2+=s[i];
          ??}
          ??? out.print(fanzhuan2);
          ??}
          %>

          出錯信息:
          java.lang.ArrayIndexOutOfBoundsException: 3
          	org.apache.jsp.fanxu2_jsp._jspService(fanxu2_jsp.java:58)
          	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
          	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
          	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
          第二次嘗試:
          ?
          ?for(int i=j;i>0;--i)//老出越界的錯誤暈!
          ??{

          ???fanzhuan2+=s[i];
          ??}
          出錯信息:
          java.lang.ArrayIndexOutOfBoundsException: 3
          	org.apache.jsp.fanxu2_jsp._jspService(fanxu2_jsp.java:58)
          	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
          	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
          	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
          第四次嘗試:
          ?for(int i=j;i>-1;--i)//老出越界的錯誤暈!
          ??{

          ???fanzhuan2+=s[i];
          ??}
          出錯信息:
          java.lang.ArrayIndexOutOfBoundsException: 3
          	org.apache.jsp.fanxu2_jsp._jspService(fanxu2_jsp.java:58)
          	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
          	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
          	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
          	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
          	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
          第五次嘗試:
          ?for(int i=j;i>1;--i)//老出越界的錯誤暈!
          ??{

          ???fanzhuan2+=s[i];
          ??}
          java.lang.ArrayIndexOutOfBoundsException: 3 org.apache.jsp.fanxu2_jsp._jspService(fanxu2_jsp.java:58) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) javax.servlet.http.HttpServlet.service(HttpServlet.java:810) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:810) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 第六次嘗試
             ?for(int i=j;i>1;)//老出越界的錯誤暈!
          ??{
          ???i=i-1;
          ???fanzhuan2+=s[i];
          ??}
          這次終于成功了
          第七次測試

          ?? while(j>0)
          ?? {
          ???? j--;
          ???? fanzhuan2+=s[j];
          ??? }???
          ??? out.print(fanzhuan2);
          ???????? }
          成功!
          第八次測試
          do {???
          ??? j--;???
          ???? fanzhuan2+=s[j];
          ??????? }??
          ??????? while(j>0);???
          ???????? out.print(fanzhuan2);????
          成功!

          第九次測試:
          ???? do {???
          ?
          ???? fanzhuan2+=s[j];
          ??????????? j--;??
          ??????? }??
          ??????? while(j>0);??
          出錯同上!



           由上面的嘗試可以發現問題是出在i--
          是在那里運算的要是在
          fanzhuan2+=s[j]; 之前則正確!
          在之后則出現越界的錯誤!

            很簡單的問題就是因為獲得length是出組的長度而不是最后一個元素的位置!應減一!
          可見還是因為對for語句和數組概念的理解不深刻!


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 金湖县| 即墨市| 揭阳市| 白朗县| 龙州县| 登封市| 蒲江县| 景谷| 衡水市| 鹤岗市| 雷波县| 万宁市| 威信县| 会理县| 株洲市| 云和县| 青阳县| 富阳市| 乌兰察布市| 黑水县| 舞钢市| 苏尼特右旗| 文化| 宜川县| 贵南县| 原阳县| 北京市| 耒阳市| 安义县| 镇安县| 当涂县| 卓尼县| 贵州省| 肃宁县| 荆州市| 黎平县| 拉萨市| 道真| 阿克苏市| 诸城市| 无锡市|