`
VerRan
  • 浏览: 459507 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

字符串反转遇到的问题

    博客分类:
  • JAVA
阅读更多
  一同学问了一个字符串反转的问题!开始觉得很简单的!
  一种思路就是获得字符串在将它转换成为字符串数组在用循环将他输出就可以了!
 我作了两个页面,一个用于输入,一个用于处理;
  我最初是这么写的:
   我正序输出时是正确的即

第一次尝试:
  

出错信息:
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语句和数组概念的理解不深刻!

分享到:
评论
2 楼 VerRan 2007-04-05  
哈哈...
是啊!.......
1 楼 pancras 2007-04-05  
如果是自己使用,只要结果而不考虑算法那么为什么不用
StringBuffer sb = new StringBuffer("你的字符串");
      String result = sb.reverse();

相关推荐

    腾讯在线笔试题-字符串反转,以及把整个字符串逆序

    在处理字符串反转和逆序的过程中,可能会遇到几个常见的问题,例如如何处理字符串的边界条件,确保不会访问到未分配的内存空间。在本例中,通过在字符串末尾添加一个空字符('\0'),来确定字符串的结束位置,并使用...

    使用几种常见的方法实现字符串反转

    ### 使用几种常见的方法实现字符串反转 #### 知识点一:使用`BufferedReader`实现字符串反转 在Java中,可以通过`BufferedReader`类从字符流中读取文本,并利用循环来实现字符串的反转。 1. **引入必要的包**: ...

    字符串反转函数

    字符串反转函数是编程中常见的一种操作,特别是在面试和笔试中经常被用来测试候选人的基本编程技巧和理解能力。本文将详细讲解如何使用堆栈来实现一个可以处理中文和英文混合的字符串反转函数。 首先,我们需要了解...

    ZIFUCHUAN.zip_字符串反转

    "ZIFUCHUAN.zip_字符串反转"这个压缩包文件显然与字符串反转功能有关,这可能是某个软件或程序的源代码,用于解决公司在笔试环节中可能会遇到的问题。字符串反转是一种常见的编程练习,涉及对字符序列进行倒序排列。...

    字符串反转(将字符串进行反转)

    最近面试遇到线上coding,总结一下算法题,都是一些常见的算法题,比如字符串反转等等,在此记录一下 class Test { public static void main(String[] args) { String str="abcdefg"; String s = reverseFive(str...

    八种方法倒转字符串暂时

    在IT行业中,字符串操作是常见的...总之,字符串反转是编程基础中的一个重要知识点,掌握不同方法可以帮助我们更好地理解和解决相关问题。无论是为了面试准备,还是日常开发,理解和熟练运用这些方法都是非常有价值的。

    C语言字符串处理函数

    void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 返回1成功 0失败 int strindex char res int pos char substr 返回substr在resource中在pos...

    javascript 实现字符串反转的三种方法

    总之,字符串反转在JavaScript编程中是一个简单但经常遇到的问题,掌握这三种方法可以有效地应对多数情况,并可以根据实际需要选择最适合的一种。此外,熟悉字符串和数组操作的知识,对于深入学习JavaScript和提高...

    浅谈php字符串反转 面试中经常遇到

    字符串反转不仅是一个面试中的常见题目,也是一个在实际编程工作中可能会遇到的场景。掌握字符串反转的各种方法不仅能够帮助解决实际问题,还能够加深对字符串处理的理解。由于面试官可能更关注应聘者的思路和编码...

    String 字符串操作、比较、查找字符、替换、反转、分割等

    字符串反转 - `reverse()`:返回一个新的字符串,其中原来的字符顺序颠倒。 ### 6. 字符串分割 - `split(String regex)`:根据给定的正则表达式将字符串分割成多个子字符串,并返回一个包含这些子字符串的数组。...

    详解Golang 与python中的字符串反转

    通过上述示例可以看出,在Go语言中处理字符串反转时需要注意编码问题,特别是当字符串可能包含非ASCII字符时。而在Python中,字符串反转的实现非常简洁高效,提供了多种灵活的方式来完成任务。无论是在Go还是Python...

    (Java)反转字符串单词,但不改变标点符号的位置

    这意味着我们不能简单地将整个字符串反转,因为这会打乱单词和标点符号的相对位置。我们需要按照以下步骤进行: 1. **预处理字符串**:将输入的字符串按照空格分割成单词,同时记录下每个单词的起始和结束位置,...

    各种C语言字符串函数-笔试面试必备

    字符串反转是常见的字符串操作之一,主要用于改变字符串的顺序。在C语言中,可以通过多种方式实现字符串的反转,包括但不限于while循环、for循环、位运算以及递归等。 - **版本1: while版** 这是最直观的方法,...

    反转字符串1

    在面试或笔试中,这类问题经常出现,因为它能考察到程序员对字符串操作的熟练程度以及逻辑思维能力。 1. **字符串处理**:在C/C++中,字符串是以字符数组的形式存储的,通常以空字符'\0'作为结束标志。在处理字符串...

    php实现字符串反转输出的方法

    字符串反转是指将字符串的顺序颠倒过来,例如将"hello"反转后得到"olleh"。在PHP中,可以使用内置函数strrev()来完成字符串的反转操作。 strrev()是PHP中的一个内置函数,它可以接受一个字符串作为参数,并返回一个...

    反转字符串

    反转字符串是一个常见的编程问题,它要求我们实现一个函数来颠倒输入字符串的顺序。这个问题在各种编程语言中都有出现,包括Python。在这个问题中,我们需要特别注意的是,我们需要在原地修改输入的字符数组,而不能...

    判断字符串是否中心对称

    在实际应用中,中心对称字符串的概念可能出现在各种场景,如数据验证、文本处理或算法设计等。例如,在文本编辑器中,可以设计一个功能来高亮显示中心对称的单词;在密码学中,中心对称的字符串可能作为某种加密或...

    判断是否为反转字符串.zip

    3. **字符串反转**:反转一个字符串可以通过多种方法实现,如使用指针交换首尾字符,或者创建一个新的字符串反向复制原字符串的每个字符。这里可能使用了后一种方法,即遍历字符串,从后往前依次添加到新字符串中。 ...

    常用字符串算法集合(c++)

    3. **字符串反转**:实现一个函数,如`reverseString()`, 使用双指针从两端向中间交换字符,或者利用`std::reverse()`函数反转字符串。 4. **字符串排序**:对字符串中的字符进行排序,可以使用`std::sort()`函数...

Global site tag (gtag.js) - Google Analytics