本帖最后由 NewDemo 于 2014-4-15 19:22 编辑
实现数组的反转,首先是错误代码- public class Test1
- {
- public static void main(String[] args)
- {
- char[] ch={'a','c','f','g','v','d','r'};
- sop(ch);
- re(ch);
- sop(ch);
- }
- public static void sop(char[]chR)//定义方法,打印数组
- {
- System.out.print("(");
- for(int x=0;x<chR.length && x!=chR.length-1;x++)
- {
- System.out.print(chR[x]+",");
- }
- System.out.println(chR[chR.length-1]+")");
- }
- public static char[] re(char []chs)//定义方法,进行反转
- {
- int start=0,end=chs.length-1;
- for(;start<end;start++,end--)
- {
- swap(chs[start],chs[end]);
- }
- return chs;
- }
- public static void swap(char ch1,char ch2)//定义方法,传进两个字符,进行换位操作。
- {
- char temp;
- temp=ch1;
- ch1=ch2;
- ch2=temp;
- }
- }
复制代码
错误的原因,调用swap()时确实传入了两个字符没错,但是执行的结果是swap()并未对原数组进行操作或修改,所以数组并未实现反转
接下来是正确的
- public class Test1
- {
- public static void main(String[] args)
- {
- char[] ch={'a','c','f','g','v','d','r'};
- sop(ch);
- re(ch);
- sop(ch);
- }
- public static void sop(char[]chR)//定义方法,打印数组
- {
- System.out.print("(");
- for(int x=0;x<chR.length && x!=chR.length-1;x++)
- {
- System.out.print(chR[x]+",");
- }
- System.out.println(chR[chR.length-1]+")");
- }
- public static char[] re(char []chs)//定义方法,进行反转
- {
- for(int start=0,end=chs.length-1;start<end;start++,end--)
- {
- swap(chs,start,end);
- }
- return chs;
- }
- public static void swap(char []chs,int x,int y)//定义方法,传进两个字符,进行换位操作。
- {
- char temp;
- temp=chs[x];
- chs[x]=chs[y];
- chs[y]=temp;
- }
- }
复制代码 很久之前的错误了,大牛们轻拍。。。
|