黑马程序员技术交流社区

标题: 反转字符串的一个问题 [打印本页]

作者: 马州州    时间: 2012-8-3 11:37
标题: 反转字符串的一个问题
将字符串反转。
class Test
{
public static void main(String[] args)
{
  String s= "asdwadf";
  System.out.println(s);
  System.out.println(reverseString(s));

}
public static String reverseString(String s)
{
  char[] chs=s.toCharArray();
  reverse(chs);
  return new String(chs);
}
public static  void reverse(char[] arr)这里为什么重新创建一个数组呢?跟用chs有什么区别?我还用chs依然可以得到结果
                                                        而且这里新建一个数组,怎么跟上面的数组联系起来呢?
{
  
  for (int start=0,end=arr.length-1 ;start<end;start++,end--)
  {
   swap(arr,start,end);
  }
  
  
}
public static void swap(char[] arr,int x,int y)
{
  char temp=arr[x];
  arr[x]=arr[y];
  arr[y]=temp;
}
}

public static  void reverse(char[] arr)就是再定义这个方法的时候,为什么重新创建一个数组呢?跟用chs有什么区别?我还用chs依然可以得到结果
而且这里新建一个数组,怎么跟上面的数组联系起来呢?



作者: 郑正华    时间: 2012-8-3 11:53
本帖最后由 郑正华 于 2012-8-3 11:58 编辑

楼主你理解错了吧。public static  void reverse(char[] arr)  这里括号里的内容意思是这个方法接收的是一个char类型的数组,arr是一个随便定义的变量名,不是你说的重新创建一个数组,没有创建..........
调用reverse方法时,肯定要往这个方法里传递一个char类型数组,你都写了reverse(chs);而且程序没报错,说明你的chs符合reverse方法的参数接收要求。
只要你传递进来的参数符合括号里的规定就OK!
作者: pphdsny3    时间: 2012-8-3 13:01
实现反转字符串没必要那么麻烦,看下我下面的代码你就明白了:
  1. public class test {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 String str = "qweasd";
  8.                 String str2 = new StringBuilder(str).reverse().toString();
  9.                 System.out.println(str2);
  10.         }

  11. }
复制代码

作者: 马州州    时间: 2012-8-3 13:07
我自己想明白啦,问题已解决




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