数组越界异常:100

-3 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]);
            } 
        } 
   }
Run Code Online (Sandbox Code Playgroud)

Sir*_*rko 5

这个

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

应该是这样的

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

注意从<=到的变化<

在您的代码中,在最后一个循环中sequals array.length,它只是数组边界外的第一个索引。

编辑

除了上面的语法错误,这里还有一个逻辑错误。在MersennefindPrime()外部循环运行从0到100,而内循环运行(“最坏情况”)为2至10所以有可能是约10×100倍,在这里增加k并尝试设置在阵列中的各索引。这远远超过您为数组分配的 100 个项目!

如果您不能确定初始化时数组的范围,请使用一些实现 interface 的类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;
    }
Run Code Online (Sandbox Code Playgroud)

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