-3

这个程序给了我数组越界异常: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]);
            } 
        } 
   }
4

1 回答 1

5

这个

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] );
} 

注意从<=到的变化<

在您的代码中,在最后一个循环中sequals 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() 中的代码!

于 2013-09-01T12:05:37.953 回答