黑马程序员技术交流社区

标题: 还是String的反转问题,修改过了,不行,想知道错在哪 [打印本页]

作者: 路边小色狼    时间: 2013-9-8 17:10
标题: 还是String的反转问题,修改过了,不行,想知道错在哪
本帖最后由 路边小色狼 于 2013-9-8 17:38 编辑

public class StringTest2
//目的:将字符串进行反转       思路一:用replace方法直接替换
{
public static void main(String[] args)
     {
         String s="abcds";
        System.out.println(fanZhuan(s));
  
      }
public static String fanZhuan(String str)
     {
  
  for(int start=0,end=str.length()-1;end-start>0;start++,end--)
            {
          char x=str.charAt(start);     //定义第三变量,与数组一样的方法换序
          str=str.replace(str.charAt(start), str.charAt(end));//用String的replace方法会返回一个新的字符串,我把它赋值给str         
          str=str.replace( str.charAt(end),x);
            }
           return str;// 问题出来了,这步打印出来还是“abcds”,我已经给str重新赋值了,我以为OK了,
     }
}



作者: 2012    时间: 2013-9-8 17:27
str=str.replace(str.charAt(start), str.charAt(end));//已经是反转后的字符串了,
str=str.replace( str.charAt(end),x);//而这一步又把反转的反转了,当然是原来的字符串啦
作者: 李锡碧    时间: 2013-9-8 17:32
我这运行你的结果是abcba

QQ截图20130908163sad753.jpg (76.9 KB, 下载次数: 10)

QQ截图20130908163sad753.jpg

作者: 杨增坤    时间: 2013-9-8 17:37
public static String fanZhuan(String str) {

                for (int start = 0, end = str.length() - 1; end - start > 0; start++, end--) {
                        char x = str.charAt(start); // 定义第三变量,与数组一样的方法换序
                       
                        str = str.replace(str.charAt(start), str.charAt(end));// 用String的replace方法会返回一个新的字符串,我把它赋值给str
                        System.out.println(x+"---"+str);//这次替换了         
                        str = str.replace(str.charAt(end), x);
                        System.out.println(x+"---"+str);//但是这次有把和最后一样的全部替换回去了
//.replace(a, b);你这不是按照索引替换的,而是按照的字符替换的
                }
                return str;// 问题出来了,这步打印出来还是“abcds”,我已经给str重新赋值了,我以为OK了,
        }

结果:
a---sbcdsa---abcdab---adcdab---abcba从诫过重可以看出,第一次替换了,但是第二次有全部替换回去了,所以结果和你想象的不一样!


作者: 路边小色狼    时间: 2013-9-8 17:37
李锡碧 发表于 2013-9-8 17:32
我这运行你的结果是abcba

很详细谢谢
作者: 路边小色狼    时间: 2013-9-8 17:38
杨增坤 发表于 2013-9-8 17:37
public static String fanZhuan(String str) {

                for (int start = 0, end = str.length() - 1; end - sta ...

非常感谢{:soso_e113:}
作者: 杨增坤    时间: 2013-9-8 17:40
楼主你好!


如果您的问题解决了,请把您问题的未解决更改为已解决

谢谢合作!


作者: 李锡碧    时间: 2013-9-8 17:58
路边小色狼 发表于 2013-9-8 17:38
非常感谢

客气   加油。都是战友
作者: 胡志翔    时间: 2013-9-9 12:02
str=str.replace(str.charAt(start), str.charAt(end));//用String的replace方法会返回一个新的字符串,我把它赋值给str         
str=str.replace( str.charAt(end),x);

你这两句相当于反转之后再反转,就又成原来的字符串了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2