黑马程序员技术交流社区

标题: 字符串反转的问题 [打印本页]

作者: 枫儿    时间: 2013-10-13 12:52
标题: 字符串反转的问题
本帖最后由 枫儿 于 2013-10-13 14:00 编辑

大家帮忙看看,为啥我这段代码打印之后还是原字符串,没有反转
  1. class  StringDemo2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s="  ab cd  ";
  6.                 sop("("+s+")");
  7.                 fz(s);
  8.                 sop("("+s+")");
  9.         }
  10.         
  11.         public static void sop(String sop)
  12.         {
  13.                 System.out.println(sop);
  14.         }

  15.         public static String fz (String f)
  16.         {
  17.                 char[] chs= f.toCharArray();
  18.                 fazh(chs);
  19.                 return new String(chs);
  20.         }

  21.         public static void fazh(char[] c)
  22.         {
  23.                
  24.                 for (int sta=0,end=c.length-1; sta<=end; sta++,end--)
  25.                 {
  26.                         saw(c,sta,end);
  27.                 }
  28.         }

  29.         public static void saw(char[] d ,int x,int y)
  30.         {
  31.                 char temp;
  32.                 temp=d[x];
  33.                 d[x]=d[y];
  34.                 d[x]=temp;
  35.         }

  36.         

  37. }
复制代码

作者: 飘落    时间: 2013-10-13 13:15
这段程序有两个小错误,如代码注释所示:
  1. class StringDemo2 {
  2.         public static void main(String[] args) {
  3.                 String s = "  ab cd  ";
  4.                 sop("(" + s + ")");
  5.                 String s2=fz(s);//改后
  6.                 sop("(" + s2 + ")");//改后
  7.         }

  8.         public static void sop(String sop) {
  9.                 System.out.println(sop);
  10.         }

  11.         public static String fz(String f) {
  12.                 char[] chs = f.toCharArray();
  13.                 fazh(chs);
  14.                 return new String(chs);
  15.         }

  16.         public static void fazh(char[] c) {

  17.                 for (int sta = 0, end = c.length - 1; sta <= end; sta++, end--) {
  18.                         saw(c, sta, end);
  19.                 }
  20.         }

  21.         public static void saw(char[] d, int x, int y) {
  22.                 char temp;
  23.                 temp = d[x];
  24.                 d[x] = d[y];
  25.                 d[y] = temp;//改后
  26.         }

  27. }
复制代码

作者: 雪人    时间: 2013-10-13 13:51
字符串是常量;它们的值在创建之后不能更改。

你直接把字符串扔到方法里面, 不接收返回值, 字符串是不会产生变化的.

即便你里面的方法写正确, 字符串也不会产生变化.
作者: To    时间: 2013-10-13 13:57
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
作者: 枫儿    时间: 2013-10-13 14:04
雪人 发表于 2013-10-13 13:51
字符串是常量;它们的值在创建之后不能更改。

你直接把字符串扔到方法里面, 不接收返回值, 字符串是不会产 ...

哦,好像记起了毕姥爷说过,字符串返回值和和刚刚这个S是两个对象




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