import java.lang.*;
public class ArrayTest{
  public static void main(String[] args)throws ArrayIndexOutOfBoundsException{
 int[] array=new int[]{1,2,6,7,5,2,8,4,6,7,9,11,5,3};
 boolean change=true;
 for(int i=1;i<=array.length&&change;i++){
  change=false;
  for(int j=i;j<=array.length-i;j++){
    int temp;
   if(array[j]>array[j+1]){
     temp=array[j];array[j]=array[j+1];array[j+1]=temp;
     change=true;
}
}
}System.out.println("最大值为:"+array[array.length]);
  System.out.println("最小值为:"+array[1]);
  float average;
  int sum=0;
for(int i=1;i<=array.length;i++){
  sum+=array[i];
}
average=sum/array.length;
System.out.println("平均值为:"+average);
System.out.println("和为:"+sum);
}}

解决方案 »

  1.   

    import java.lang.*; 
    public class ArrayTest{ 
     public static void main(String[] args)throws ArrayIndexOutOfBoundsException{ 
     int[] array=new int[]{1,2,6,7,5,2,8,4,6,7,9,11,5,3}; 
     boolean change=true; 
     for(int i=0;i <array.length&&change;i++){ 
      change=false; 
      for(int j=0;j <array.length-i-1;j++){ 
       int temp; 
       if(array[j]>array[j+1]){ 
         temp=array[j];
         array[j]=array[j+1];
         array[j+1]=temp; 
         change=true; 


    }System.out.println("最大值为:"+array[array.length-1]); 
      System.out.println("最小值为:"+array[1]); 
      float average; 
      int sum=0; 
    for(int i=0;i <array.length;i++){ 
      sum+=array[i]; 

    average=sum/array.length; 
    System.out.println("平均值为:"+average); 
    System.out.println("和为:"+sum); 
    }}
      

  2.   

    if (array[j] > array[j + 1]) {
    这句有问题,你上面的数组长度一共是14,那么在循环最后一个时候,最后一个数组的下标是13,那么你这里就变成了
    if(array[13] > array[14]),那很明显就是数组越界错误了
      

  3.   

    import java.lang.*; 
    public class ArrayTest{ 
     public static void main(String[] args)throws ArrayIndexOutOfBoundsException{ 
     int[] array=new int[]{1,2,6,7,5,2,8,4,6,7,9,11,5,3}; 
     boolean change=true; 
     for(int i=0;i <array.length&&change;i++){ 
      change=false; 
      for(int j=0;j <array.length-i-1;j++){ 
       int temp; 
       if(array[j]>array[j+1]){ 
         temp=array[j];
         array[j]=array[j+1];
         array[j+1]=temp; 
         change=true; 


    }System.out.println("最大值为:"+array[array.length-1]); 
      System.out.println("最小值为:"+array[0]); 
      float average; 
      int sum=0; 
    for(int i=0;i <array.length;i++){ 
      sum+=array[i]; 

    average=sum/array.length; 
    System.out.println("平均值为:"+average); 
    System.out.println("和为:"+sum); 
    }}
      

  4.   

    数组的下标值从0开始到Array.length-1结束
      

  5.   

    下标从0开始,到Array.length-1结束
    你的引用有问题了
    public class Overloading {
    public static void main(String[] args)
    throws ArrayIndexOutOfBoundsException {
    int[] array = new int[] { 1, 2, 6, 7, 5, 2, 8, 4, 6, 7, 9, 11, 5, 3 };

    for (int i = 0; i < array.length-1 ; i++) {

    for (int j = i+1; j < array.length ; j++) {
    int temp;
    if (array[i] > array[i + 1]) {
    temp = array[i];
    array[i] = array[i + 1];
    array[i + 1] = temp;

    }
    }
    }
    System.out.println("最大值为:" + array[array.length-1]);
    System.out.println("最小值为:" + array[0]);
    float average;
    int sum = 0;
    for (int i = 0; i < array.length; i++) {
    sum += array[i];
    }
    average = sum / array.length;
    System.out.println("平均值为:" + average);
    System.out.println("和为:" + sum);
    }
    }
      

  6.   

    在JAVA中:
    数组的下标值从0开始;
    Array.length是数组的长度,
    比如: int[] array = new int[] {  5, 3 };
    array的长度是2,但它的最大下标不能取到2,
    array[0]=5,array[1]=3;
    因此你要取它的全部数据你就要从0到array.length就可以了.
      

  7.   

    array.length是数组长度,但是访问的时候是从0开始的
    最简单的解释,length=1说明有1个元素,但是访问它就是array[0]
    如果length=100,array[99]就是最后一个了,array[100]就是越界了你的for语句第2个判断用了'<=',改成'<'应该可以了
      

  8.   

    排序如果不考虑效率的话,记住下面这句话就行了:
     “循环length-1轮,循环length-1次,再将数据的前一个与后一个比较,如果大于或小于就交换。”
    先写出二层for循环再说,优化先等你写出来了再进行。