A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 路边小色狼 于 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了,
     }
}


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

8 个回复

倒序浏览
str=str.replace(str.charAt(start), str.charAt(end));//已经是反转后的字符串了,
str=str.replace( str.charAt(end),x);//而这一步又把反转的反转了,当然是原来的字符串啦

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
我这运行你的结果是abcba

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

QQ截图20130908163sad753.jpg

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
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:32
我这运行你的结果是abcba

很详细谢谢
回复 使用道具 举报
杨增坤 发表于 2013-9-8 17:37
public static String fanZhuan(String str) {

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

非常感谢{:soso_e113:}
回复 使用道具 举报
楼主你好!


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

谢谢合作!

回复 使用道具 举报

客气   加油。都是战友
回复 使用道具 举报
str=str.replace(str.charAt(start), str.charAt(end));//用String的replace方法会返回一个新的字符串,我把它赋值给str         
str=str.replace( str.charAt(end),x);

你这两句相当于反转之后再反转,就又成原来的字符串了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马