黑马程序员技术交流社区

标题: 对指定字符串的部分进行反转 [打印本页]

作者: 葛奎    时间: 2012-6-26 18:28
标题: 对指定字符串的部分进行反转
本帖最后由 葛奎 于 2012-6-26 18:36 编辑
  1. class StringTest3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str="abcdef";
  6.                 char[] ch=str.toCharArray();
  7.                 char[] ch1=startToEnd(ch,4,4);<font size="5">//请问:(ch,2,4) (ch,0,5)这里面不管输入的是什么,怎么最后的运行的结果都是abcdef????</font>
  8.                 sop(charToString(ch1));
  9.         }
  10.         public static String charToString(char[] ch)
  11.         {
  12.                 String str="";
  13.                 for(int i=0;i<ch.length;i++)
  14.                 {
  15.                         str+=ch[i];
  16.                 }
  17.                 return str;
  18.         }
  19.         public static void sop(Object obj)
  20.         {
  21.                 System.out.println(obj);
  22.         }
  23.         public static char[] startToEnd(char[] arr,int start,int end)
  24.         {
  25.                 if(start<0||end>(arr.length-1)||(start-end)<=0)
  26.                         return arr;
  27.                 else
  28.                 {
  29.                         while((end-start)>=0)
  30.                         {
  31.                                 swap(arr,start,end);
  32.                                 start++;
  33.                                 end--;
  34.                         }
  35.                         return arr;
  36.                 }

  37.         }
  38.         public static void swap(char[] arr,int a,int b)
  39.         {
  40.                 char ch;
  41.                 ch=arr[a];
  42.                 arr[a]=arr[b];
  43.                 arr[b]=ch;
  44.         }
  45. }


复制代码

作者: 韦念欣    时间: 2012-6-26 18:29
本帖最后由 韦念欣 于 2012-6-26 18:36 编辑

startToEnd方法中的 if 判断条件写错了!


class StringTest3
{
        public static void main(String[] args)
        {
                String str="abcdef";
                char[] ch=str.toCharArray();
                char[] ch1=startToEnd(ch,0,5);
                sop(charToString(ch1));
        }
        public static String charToString(char[] ch)
        {
                String str="";
                for(int i=0;i<ch.length;i++)
                {
                        str+=ch;
                }
                return str;
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static char[] startToEnd(char[] arr,int start,int end)
        {
                if(start<0||end>(arr.length-1)||(start-end)>=0)        // 改成(start-end)>=0
                        return arr;
                else
                {
                        while((end-start)>=0)
                        {
                                swap(arr,start,end);
                                start++;
                                end--;
                        }
                        return arr;
                }
        }
        public static void swap(char[] arr,int a,int b)
        {
                char ch;
                ch=arr[a];
                arr[a]=arr;
                arr=ch;
        }
}

作者: 周朋飞    时间: 2012-6-27 00:59
楼主遇到问题可以先debug一下,你就会发现你出的错误了,你的判断条件肯定为真,所以直接就返回了就不会往下执行了,开始下标本来就应该小于结尾的下标的 呵呵 只要将<=改成大于等于0就行了   因为等于0 的情况跟你直接返回是一个结果




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