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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gaigai7 初级黑马   /  2014-5-7 17:54  /  901 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class StringTest
{
        public static void main(String[] args)
        {
                String s = "    abcd dert    ";
                 MyTrim(s);
                 System.out.println(reverseString(s));
        //        System.out.println(s);
        }
        public static void MyTrim(String str)
        {
                int start = 0 ,end = str.length()-1;
                while(start <= end && str.charAt(start) == ' ')
                        start++;
                while(start <= end && str.charAt(end) == ' ')
                        end--;
                String s = str.substring(start,end+1);
                System.out.println(s);
        }
        public static String reverseString(String str)
        {
                char[] chs = str.toCharArray();
                reverse(chs);
                return new String(chs);
        }
        public static void reverse(char[] arr)
        {
                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] = arr[temp];
        }
}

5 个回复

倒序浏览
{:2_34:}先来看异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 32
        at day3.Test1.swap(Test1.java:39)
        at day3.Test1.reverse(Test1.java:32)
        at day3.Test1.reverseString(Test1.java:25)
        at day3.Test1.main(Test1.java:9)

ArrayIndexOutOfBoundsException是角标越界异常
再去看at day3.Test1.swap(Test1.java:39),找到代码的39行,发现arr[y] =arr[temp];写错了
改成arr[y] = temp;

所以,楼主必须要学会根据提示的信息去解决问题了。。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
你的swap方法写错了,temp 本身就是char可以直接赋值给 arr[y] 。
下面是该更后的swap方法
  1. public static void swap(char[] arr, int x, int y)
  2.         {
  3.                 char temp = arr[x];
  4.                 arr[x] = arr[y];
  5.                 arr[y] = temp;
  6.         }
复制代码
回复 使用道具 举报
z1342802487 发表于 2014-5-7 18:06
你的swap方法写错了,temp 本身就是char可以直接赋值给 arr[y] 。
下面是该更后的swap方法
...

哦哦   谢谢
回复 使用道具 举报
学会调试很重要吧,写程序爆红不可怕,能调过来就好了
回复 使用道具 举报
用eclipse     一般在编写的时候哪里有问题都会报错,很好用的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马