此代码用于查找第1001个素数:
public class problem7 {
public static void main(String[] args) {
int[] myarray = new int[1001];
int j = 0;
boolean prime = false;
for(int i = 2;;i++){
for(int k = 2;k <i; k++){
if(i== (k-1) && i % k != 0){
prime = true;
}
if (i % k == 0){
prime = false;
prime = true;
}
if (prime){
myarray[j] = i;
}
if(j==1000){
System.out.println(myarray[1000]);
}
j++;
}
}
}
}
它告诉我我的数组已经超出界限。不知道为什么。任何帮助将不胜感激
答案 0 :(得分:0)
要解决此特定问题,您必须在找到所需的号码后停止代码(在打印找到的值后通过return
):
if(j==1000){
System.out.println(myarray[1000]);
return;
}
这样可以避免下次拨打j++;
以及下次拨打ArrayIndexOutOfBoundsException
时myarray[j] = i;
。{/ p>
答案 1 :(得分:0)
完成后
if(j==1000){ //if j is 1000
System.out.println(myarray[1000]);
}
j++; // now j is 1001
你没有停止执行。在下一次迭代中,您正在尝试
if (prime){
myarray[j] = i; // your j is 10001
}
因此,要么从两个循环中断,要么在打印myarray[1000]
后返回。