import java.util.*;
public class E6{
public static void main(String args[]){
int a[]=new int[24];
int i=0;
Random rand=new Random();
for( i=0;i<=24;i++)
a[i]=rand.nextInt()%100;
for(i=0;i<=24;i++)
if (a[i]>a[i+1])
System.out.println(a[i]+"大于"+a[i+1]);
else if (a[i]<a[i+1])
System.out.println(a[i]+"小于"+a[i+1]);
else 
System.out.println(a[i]+"等于"+a[i+1]);
}
}
编译通过,运行时提示Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 24
        at E6.main(E6.java:8)
谢谢!!!

解决方案 »

  1.   

    import java.util.*; 
    public class E6{ 
    public static void main(String args[]){ 
    int a[]=new int[24]; 
    int i=0; 
    Random rand=new Random(); 
     try{
      for( i=0;i<24;i++) 
      a[i]=rand.nextInt()%100; 
      for(i=0;i <24;i++){
      if (a[i]>a[i+1]) 
      System.out.println(a[i]+"大于"+a[i+1]); 
      else if (a[i] <a[i+1]) 
      System.out.println(a[i]+"小于"+a[i+1]); 
      else  
      System.out.println(a[i]+"等于"+a[i+1]); 
       }
     }
     catch(Exception e){
      System.out.println(e);
       }
     }
      

    我运行可以了  你的下标越界了 
      

  2.   

    最好不要把index硬编码出来吧,用下面的方式吧。        int[] a = new int[24];
            for(int i:a){ // jdk 1.5及其以上
                // TODO
            }
            
            for(int i=0;i<a.length;i++){ // 传统方式
                // TODO
            }
      

  3.   

    1楼的同样越界。
    反正不能出现a[a.length]那样肯定会越界的,也就是说a[i+1]越了,稍稍改下就行了。比如a[i-1]>a[i]之类的
      

  4.   

              int a[]=new int[24]; 
      int i=0; 
      Random rand=new Random(); 
      for( i=0;i <24;i++) 
      a[i]=rand.nextInt()%100; 
      for(i=0;i <23;i++) 
      if (a[i]>a[i+1]) 
      System.out.println(a[i]+"大于"+a[i+1]); 
      else if (a[i] <a[i+1]) 
      System.out.println(a[i]+"小于"+a[i+1]); 
      else  
      System.out.println(a[i]+"等于"+a[i+1]); 
    ---------------------------------------------------------------
    不知道楼主最后一个数想跟第几个数比较?
      

  5.   

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
    这是数组越界的意思
    应该是你编写的代码中,又关数组的有不小心越界了
    修改下应该就可以了
      

  6.   

    因为你定义数组大小是24个元素,而索引是23,你循环条件不应该是<=24,换成<=23就行了
      

  7.   


    习惯不好,就算要那样操作,一般都要写成for( i=0;i < a.length();i++)  {}1,长度不要去硬编码
    2,i <   不要去 <=以上个人理解,仅供参考。
      

  8.   


    java.lang.ArrayIndexOutOfBoundsException这个异常就是数组下标越界的的意思
    for( i=0;i <=24;i++) i的值是0-24,而你的数组长度为23,所以越界了。解决方法:1。for( i=0;i  <24;i++)
    2。for( i=0;i  < a.length();i++) 
    输出的时候可以
    for(int i:a){ // jdk 1.5及其以上
              System.out.println(i);//遍历数组a
    }
      

  9.   

    如果数组为a[10]
    数组长度是10
    但数组默认下标是从0开始的
    所以最长为最大下标为a[9]
    也就是a[a.length-1]
    超过了
    就会出异常Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException 
      

  10.   

    改成:
    import java.util.*; 
    public class E6{ 
    public static void main(String args[]){ 
    int a[]=new int[24]; //总共24个
    int i=0; 
    Random rand=new Random(); 
    for( i=0;i <=24;i++) 
    a[i]=rand.nextInt()%100; 
    for(i=0;i <23;i++) //所以这里只能到<=23或者<24 但考虑到你最后有+1,所以只能
    <=22或者<23 这样也全部遍历了
     
    if (a[i]>a[i+1]) 
    System.out.println(a[i]+"大于"+a[i+1]); 
    else if (a[i] <a[i+1]) 
    System.out.println(a[i]+"小于"+a[i+1]); 
    else  
    System.out.println(a[i]+"等于"+a[i+1]);