-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)
这个
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() 中的代码!
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |