调试我在java方法中找不到返回素数数组的错误。
它只使用素数来检查其他数字是否也是素数
static public int[] primeGen(int a){
int[] series={2};
if (a==1 || a==2 || a<=0){
return series;
}
这就是错误发生的地方
else{
boolean Prime = false;
for (int i = 3; i<=a; i++){
boolean[] state = {};
for (int j = 0; !(state[state.length-1]) && (j<series.length); j++){
state = Arrays.copyOf(state, state.length +1);
state[state.length -1] = i % series[j] ==0;
}
for (int k = 0; (Prime) && (k<state.length); k++){
Prime = !(state[k]);
}
if (Prime){
series = Arrays.copyOf(series, series.length +1);
series[series.length -1] = i;
}
}
return series;
}
}
抱歉,如果我刚刚犯了一个新手错误,因为我已经学习Java三天了
# 1 楼答案
您的
state
数组已初始化为空数组,因此!(state[state.length-1])
尝试访问该数组的无效索引(-1)# 2 楼答案
这条线
这意味着只有Prime为true时才会执行循环。但是,您已经将Prime初始化为false,并且只在循环中将其设置为true
看起来您正在使用数组。copyOf以增加输出数组的大小。你可以用向量。改为add(),JVM将处理所需的任何大小调整