黑马程序员技术交流社区

标题: String字符串问题,求解 [打印本页]

作者: 。。。。。。。    时间: 2013-11-8 15:24
标题: String字符串问题,求解
本帖最后由 。。。。。。。 于 2013-11-8 15:29 编辑

复制代码
  1. String s = "abcdefg";
  2.         public static void swap(String s,int start,int end){               
  3.       int num = s.charAt(start);
  4.       s.charAt(start)=s.charAt(end);
  5.       s.charAt(end)=num;
  6.         }
复制代码
字符串中字符不能互换位置吗?
例如把索引为1的字符和索引为4的字符调换位置,这样不行吗?非要转换成字符数组才能够换位置吗?


作者: 青年黨衛軍    时间: 2013-11-8 16:00
卤煮在概念的理解上有些偏差啊,就拿你提供的代码来说吧。
首先,s.charAt(start)获得的是处于字符串s中的start角标位置的字符的ASCII码,之后你的语句的操作是把字符串s中的end角标位置的字符的ASCII码赋值给start角标位置的字符的ASCII码,这显然不对,一个常量怎么能给另一个常量赋值呢?能赋值操作的只有变量,所以你代码中s.charAt(start)=s.charAt(end);是不对的。
另外也不能赋值给常量所以s.charAt(end)=num;也是错的。

作者: ysunday    时间: 2013-11-8 20:43
字符串是常量,一旦定义就不能更改了,比如你的String s = "abcdefg",这个串“abcdefg”就不能变了,你可以重新给s赋值,但是“abcdefg”是改变不了的。
作者: ysunday    时间: 2013-11-8 20:51
另外   s.charAt(start)=s.charAt(end);这句,a.charAt(start)是取出s中对应位置的字符,比如取出的是‘a',s.charAt(end)取出的也是个字符,比如‘g’,然后你这句,翻译过来就是这样‘a' = ’f‘这样显然是不行的,倒是可以重新定义个空串 String s2 = "";然后你再用个for循环
char temp = s.charAt(start);
for(int x = 0; x < s.length(); x++){
     if(x == start)
           s2 += s.charAt(end);
      else if(x == end)
           s2 += temp;
       else
           s2 += s.charAt(x);
}
然后你return s2就行了




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