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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 井瑞涛 中级黑马   /  2013-3-4 12:50  /  1604 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

蒙圈了,求大神解决,
class  Qq
{
                public static void a(int[] bb)
                {
                        for (int x=0;x<bb.length;x++)
                        {
                                for (int y=x+1;y<bb.length-x;y++)
                                {
                                        if (bb[x]>bb[y+1])
                                        {
                                                int z=bb[x];
                                                bb[x]=bb[y];
                                                bb[y]=z;
                                        }                       
                                }       
                        }
                }                               
        public static void main(String[] args)
                {
                        int[] bb={1,2,3,6,4,};
                        c(bb);
                        a(bb);
                        c(bb);
                }
        public static void c(int[] bb)
        {
                for (int x=0;x<bb.length;x++)
                {
                        System.out.print(bb[x]+",");
                }
               
        }       
}
打印完是这个样子的看不懂,大神给点指导


1,2,3,6,4,Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5

        at Qq.a(Qq.java:9)
        at Qq.main(Qq.java:22)

评分

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

查看全部评分

3 个回复

倒序浏览
你的数组创建的不对,.ArrayIndexOutOfBoundsException: 5该提示是说角标越界异常,应该是这int[]bb={1,2,3,4,6};6后面是没有逗号的哦
回复 使用道具 举报
本帖最后由 张子凯 于 2013-3-4 13:22 编辑

数组下标越界。你的代码public static void a(int[] bb){}排序拍不了序,改正如下:         
public static void a(int[] bb)                {
                        for (int x=0;x<bb.length-1;x++)
                        {
                                for (int y=x+1;y<bb.length;y++) //你这句话有问题,选择排序x=0到bb.length-2与y=1到bb.length-1分别比较
                                {
                                        if (bb[x]>bb[y])
                                        {
                                                int z=bb[x];
                                                bb[x]=bb[y];
                                                bb[y]=z;
                                        }                        
                                }        
                        }
                }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
你的代码中有几处错误,下面是我改过的,你比较一下。


class  Demo
{
                 public static void a(int[] bb)
                 {
                         for (int x=0;x<bb.length-1;x++)
                         {
                                 for (int y=x+1;y<bb.length;y++)
                                 {
                                         if (bb[x]>bb[y])
                                         {
                                                 int z=bb[x];
                                                 bb[x]=bb[y];
                                                 bb[y]=z;
                                         }                        
                                }        
                        }
                 }                                
        public static void main(String[] args)
                 {
                         int[] bb={1,2,3,6,4};
                        
                         a(bb);
                         c(bb);
                 }
         public static void c(int[] bb)
        {
                 for (int x=0;x<bb.length;x++)
                 {
                         System.out.print(bb[x]+",");
                 }
                 
        }        
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马