黑马程序员技术交流社区
标题:
String字符串问题,求解
[打印本页]
作者:
。。。。。。。
时间:
2013-11-8 15:24
标题:
String字符串问题,求解
本帖最后由 。。。。。。。 于 2013-11-8 15:29 编辑
复制代码
String s = "abcdefg";
public static void swap(String s,int start,int end){
int num = s.charAt(start);
s.charAt(start)=s.charAt(end);
s.charAt(end)=num;
}
复制代码
字符串中字符不能互换位置吗?
例如把索引为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