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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-雷钊 中级黑马   /  2013-5-11 14:54  /  1594 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-雷钊 于 2013-5-11 16:16 编辑

class asd {
        public static void main(String[] args){
                asd a = new asd();
                String s1 = "ahfksnjdhsiauehsdsfuw";
                char[] arr = a.toArray(s1);
                a.pai(arr);
                String s2 = a.toString(arr);
                System.out.println(s2);
        }
        //第一步,将字符串转换成数组
        public char[] toArray (String str ) {
                return str.toCharArray();
        }
        
        //第二步,排序
        public void pai(char[] arr) {
                for (int i = 0; i < arr.length -1 ; i++) {
                        for (int j = 1+1; j < arr.length; j++) {
                                swap(arr, i , j+1);
                        }
                }
        }

        //第三部,封装一个交换的方法
        public void swap(char[] arr, int i, int j) {
                int temp = arr;
                arr = arr[j];
                arr[j ] = arr;
               
        }
        
        //第四步,将字符数组转换成字符串
        public String toString(char[] arr){
                return arr.toString();
        }
        

        
        
}
上面的代码是我写的一个用于将字符串排序的代码。。不过运行的时候报错。。。我试下很多方法都没试出来。。求解释运行时为啥出错

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 殇_心。 于 2013-5-11 15:13 编辑

class Demo {
        public static void main(String[] args){
                Demo a = new Demo();
                String s1 = "ahfksnjdhsiauehsdsfuw";
                char[] arr = a.toArray(s1);
                a.pai(arr);

                                String s2 = a.toString(arr);
                System.out.println(s2);
        }
        //第一步,将字符串转换成数组
        public char[] toArray (String str ) {
                return str.toCharArray();
        }
        
        //第二步,排序 从小到大
        public void pai(char[] arr) {
                for (int i = 0; i < arr.length -1 ; i++) {
                      for (int j = i+1; j < arr.length; j++) {
                                                        if( arr> arr[j] )
                                               swap(arr, i , j);
                        }

                }
        }

        //第三部,封装一个交换的方法
        public void swap(char[] arr, int i, int j) {
char temp = arr;
arr = arr[j];
                arr[j ] = temp;

        }

        //第四步,将字符数组转换成字符串
        public String toString(char[] arr){
  return new String(arr);
        }      
}
//不知道怎么回事。。 代码显示就是有问题。arr代表arr【i】
//你的程序出错是因为角标越界了。
//代码中红色是已修改。你对比看看。 基础得学好咯。







回复 使用道具 举报
殇_心。 发表于 2013-5-11 15:07
class Demo {
        public static void main(String[] args){
                Demo a = new Demo();

swap函数貌似写错了,应该是arr【i】赋值给中间变量temp
回复 使用道具 举报
殇_心。 发表于 2013-5-11 15:07
class Demo {
        public static void main(String[] args){
                Demo a = new Demo();

原来如此。。不过编译的时候没报错。。哈哈  谢谢了 哦   我在调试的时候一直以为是主函数出错了。。因为编译没报错错  。就是运行时一大堆英文中间写了个“main”
回复 使用道具 举报
明天,你好 发表于 2013-5-11 15:22
swap函数貌似写错了,应该是arr【i】赋值给中间变量temp

。。谢谢了哦    忽略了那了   这个主要是还是少些了个if()语句。。。。:L
这两天回答问题把人回答傻了
回复 使用道具 举报
写代码,要先有逻辑再写,不然很容易出乱。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马