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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Blüe-wǒlf 中级黑马   /  2014-6-5 10:29  /  869 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Blüe-wǒlf 于 2014-6-5 13:22 编辑
  1. class Test
  2. {
  3. public static void main(String[] args)
  4. {
  5. String s="123456789";
  6. System.out.println(s);
  7. System.out.println(reverseString(s));
  8. System.out.println(reverseString(s,3,4));//这句为什么换不了。
  9. }
  10. public static String reverseString(String s,int start,int end)
  11. {
  12. char[] chr=s.toCharArray();
  13. reverse(chr,start,end);
  14. return new String(chr);
  15. }
  16. public static String reverseString(String s)
  17. {
  18. return reverseString(s,0,s.length());
  19. }
  20. public static void reverse(char[] arr,int x,int y)
  21. {
  22. for (int start=x,end=y-1;start<end;start++,end--)
  23. {
  24. swap(arr,start,end);
  25. }
  26. }
  27. public static void swap(char[] arr,int x,int y)
  28. {
  29. char temp=arr[x];
  30. arr[x]=arr[y];
  31. arr[y]=temp;
  32. }
  33. }

复制代码

2 个回复

倒序浏览
其实已经换了,先看看你写的下面这段代码的含义吧:
public static void reverse(char[] arr,int x,int y)
{
for (int start=x,end=y-1;start<end;start++,end--)
{
传入参数:要转换的数组,开始下标,第几个数结束。
参数赋值x=3,y=4.执行语句时,start=x=3,end=y-1=3。即交换的字母是同一个位置上的字母,所以结果好像没有运行一样,其实结果正确。
若想交换下标为3,4(即数字4,5)的数,应写成reverseString(s,3,5)。
希望对你有帮助。
回复 使用道具 举报 1 0
夏日蓝雪 发表于 2014-6-5 11:46
其实已经换了,先看看你写的下面这段代码的含义吧:
public static void reverse(char[] arr,int x,int y)
...

so  ga .ありがとう :handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马