数组超出范围异常:100

时间:2013-09-01 12:03:16

标签: java

这个程序给出了数组超出范围的异常:100 怎么解决???还告诉我我的阵列打印方法是否正确?

    import java.util.Random; 
    import java.lang.Math;    

    class MersennePrime  { 

        public  int[] MersennefindPrime() {     
            int i=0;    
            int k=0;    
            int array[] = new int[100];     
            for(i=2;i<100;i++)    
            {       
                int count=0;          
                for(int j=2;j<=Math.sqrt(i);j++  )          
                {             
                    if(i%j==0)              
                    {                               
                    }                               
                    else                
                    {               
                        array[k]=i;                 
                        k++  ;              
                    }           
                }      
            }       
            return array; 
        }        

    }  


    public class MersenneRandomNumbers  
    {   
        public static void main(String[] args)      
        {                       
            MersennePrime mrn = new MersennePrime();        
            int array[] =mrn.MersennefindPrime();       
            for(int s=0;s<=array.length;s  )        
                System.out.println("array is " array[s]);
            } 
        } 
   }

1 个答案:

答案 0 :(得分:4)

for(int s=0;s<=array.length;s  )        
  System.out.println("array is " array[s]);
} 

应该是这样的

for(int s=0; s<array.length; s++) {    
  System.out.println( "array is " + array[s] );
} 

请注意从<=<的更改!

在你的代码中,在最后一个循环中s等于array.length,这只是数组边界之外的第一个索引。

编辑

除了上面的句法错误,这里也有一个逻辑错误。在MersennefindPrime()中,外循环从0到100运行,而内循环从2到10运行(“最坏情况”)。因此,可能会有大约10 * 100次,其中增加k和尝试在数组中设置相应的索引。这远远超过了为数组分配的100个项目!

如果在初始化时无法确定数组的范围,请使用实现接口List的某个类。这可能是这样的:

    public  List<Integer> MersennefindPrime() {
        ArrayList<Integer> array = new ArrayList<Integer>();
        for(int i=2;i<100;i++)
        {
            for(int j=2;j<=Math.sqrt(i);j++  )
            {
                if(i%j==0)
                {
                }
                else
                {
                    array.add( i );
                }
            }
        }
        return array;
    }

您必须相应调整main()中的代码!