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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叶燕希 中级黑马   /  2015-5-23 12:58  /  420 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package ye;

public class Ye_3 {
public static void main(String args[]){
    int[] arr={2,9,5};
    printshuzu(arr);
    xuanzhe(arr);
}
public static void xuanzhe(int[] arr){
    for(int x=0;x<=arr.length;x++){
        for(int y=x+1;y<=arr.length;y++){
            if(arr[x]>arr[y]){
                int temp=arr[x];
                arr[x]=arr[y];
                arr[y]=temp;
            }
        }
    }
}
public static void printshuzu(int[] arr){
    for (int x=0;x<=arr.length;x++){
        if(x!=arr.length-1){
            System.out.print(arr[x]);
        }
    }
}
}
这个程序最后运行结果提示:
29Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at ye.Ye_3.printshuzu(Ye_3.java:23)
    at ye.Ye_3.main(Ye_3.java:6)
就是上面标红的两行出错。求解释

7 个回复

倒序浏览
把选择排序再看看,你代码角标都越界拉。       
public class Ye_3 {
public static void main(String args[]){
                    int[] arr={2,9,5};
                    printshuzu(arr);
                    xuanzhe(arr);
                    printshuzu(arr);
                }
                public static void xuanzhe(int[] arr){
                    for(int x=0;x<arr.length-1;x++){
                        for(int y=x+1;y<arr.length;y++){
                            if(arr[x]>arr[y]){
                                    {  int temp=arr[x];
                                arr[x]=arr[y];
                                arr[y]=temp;
                                }
                            }
                        }
                    }
                }
                public static void printshuzu(int[] arr){
                        System.out.println("[");
                    for (int x=0;x<arr.length;x++){
//加这步判断就是为啦打印[ ],这样看起来比较悦目,如果不为好看循环里面就直接写System.out.println(arr[x]);
                        if(x!=arr.length-1)
                                System.out.print(arr[x]+", ");
                        else
                        
                               
                            System.out.println(arr[x]+"]");
                           
                        
                    }
                }
                }
回复 使用道具 举报
水水更健康!
回复 使用道具 举报

额~~~~能不能来点真实的。这不是 水经验啊~
回复 使用道具 举报
途中ms前进 发表于 2015-5-23 13:55
把选择排序再看看,你代码角标都越界拉。       
public class Ye_3 {
public static void main(String args[]){

哦,谢谢。
回复 使用道具 举报
public static void printshuzu(int[] arr){
     for (int x=0;x<=arr.length;x++){
         if(x!=arr.length-1){
             System.out.print(arr[x]);
         }
     }
将x<=arr.length中的=去掉即可。
回复 使用道具 举报
  for (int x=0;x<=arr.length;x++),不要=
回复 使用道具 举报

恩恩,知道了,已经解决了。谢谢哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马