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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葛奎 中级黑马   /  2012-6-26 18:28  /  1975 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葛奎 于 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. }


复制代码

2 个回复

倒序浏览
本帖最后由 韦念欣 于 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;
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主遇到问题可以先debug一下,你就会发现你出的错误了,你的判断条件肯定为真,所以直接就返回了就不会往下执行了,开始下标本来就应该小于结尾的下标的 呵呵 只要将<=改成大于等于0就行了   因为等于0 的情况跟你直接返回是一个结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马