黑马程序员技术交流社区

标题: 新手求助 [打印本页]

作者: 叶燕希    时间: 2015-5-23 12:58
标题: 新手求助
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)
就是上面标红的两行出错。求解释


作者: 途中ms前进    时间: 2015-5-23 13:55
把选择排序再看看,你代码角标都越界拉。       
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]+"]");
                           
                        
                    }
                }
                }
作者: 冷雨敲窗被未温    时间: 2015-5-23 14:35
水水更健康!
作者: 叶燕希    时间: 2015-5-23 14:39
冷雨敲窗被未温 发表于 2015-5-23 14:35
水水更健康!

额~~~~能不能来点真实的。这不是 水经验啊~
作者: 叶燕希    时间: 2015-5-23 14:40
途中ms前进 发表于 2015-5-23 13:55
把选择排序再看看,你代码角标都越界拉。       
public class Ye_3 {
public static void main(String args[]){

哦,谢谢。
作者: wangkai    时间: 2015-5-23 16:30
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中的=去掉即可。
作者: guojiadui    时间: 2015-5-23 17:28
  for (int x=0;x<=arr.length;x++),不要=
作者: 叶燕希    时间: 2015-5-23 17:41
guojiadui 发表于 2015-5-23 17:28
for (int x=0;x

恩恩,知道了,已经解决了。谢谢哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2