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 劉恒濤 閱讀(514) 評論(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語句和數組概念的理解不深刻!


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


          網站導航:
           
          主站蜘蛛池模板: 金寨县| 任丘市| 五峰| 泾源县| 华容县| 雷山县| 岳普湖县| 廊坊市| 庆元县| 凉山| 唐山市| 手游| 扎囊县| 浙江省| 武平县| 广饶县| 白城市| 集安市| 安国市| 广丰县| 临海市| 荥经县| 新安县| 正蓝旗| 泉州市| 科尔| 额敏县| 南充市| 焦作市| 泸西县| 安阳市| 黑龙江省| 天镇县| 莎车县| 阳朔县| 金秀| 新沂市| 高台县| 彩票| 宁城县| 犍为县|