黑马程序员技术交流社区

标题: 互换问题。 [打印本页]

作者: Blüe-wǒlf    时间: 2014-6-5 10:29
标题: 互换问题。
本帖最后由 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. }

复制代码


作者: 夏日蓝雪    时间: 2014-6-5 11:46
其实已经换了,先看看你写的下面这段代码的含义吧:
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)。
希望对你有帮助。

作者: Blüe-wǒlf    时间: 2014-6-5 13:00
夏日蓝雪 发表于 2014-6-5 11:46
其实已经换了,先看看你写的下面这段代码的含义吧:
public static void reverse(char[] arr,int x,int y)
...

so  ga .ありがとう :handshake




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