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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 枫儿 金牌黑马   /  2013-10-13 12:52  /  1575 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 枫儿 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
To + 1 多提一些质量贴。自己可以对照毕老师的代码.

查看全部评分

4 个回复

倒序浏览
这段程序有两个小错误,如代码注释所示:
  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. }
复制代码
回复 使用道具 举报
字符串是常量;它们的值在创建之后不能更改。

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

即便你里面的方法写正确, 字符串也不会产生变化.
回复 使用道具 举报 1 0
To 金牌黑马 2013-10-13 13:57:15
板凳
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
回复 使用道具 举报
雪人 发表于 2013-10-13 13:51
字符串是常量;它们的值在创建之后不能更改。

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

哦,好像记起了毕姥爷说过,字符串返回值和和刚刚这个S是两个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马