我试图让所有素数在1到10之间,然后将它们放入一个数组中。我收到ArrayIndexOutOfBoundsException
错误。
我得到这个是因为第一个for循环有starNum <=10
而且数组在技术上还没有任何值吗?
我不知道如果仍然有1到10的范围,如何对语句进行短语。非常感谢帮助。
public static void main(String[] args) {
int [] array = new int[args.length];
for (int starNum = 1; starNum <= 10; starNum ++){
boolean isPrime = true;
int list = Integer.parseInt(args[starNum]);
for (int i = 1; i*i <= starNum; i++) {
if (starNum % 2 == 0) {
isPrime = false;
}
}
if (isPrime) {
System.out.println(starNum);
array[starNum] = list;
System.out.println(array);
}
}
}
答案 0 :(得分:0)
确保数组索引从 0 开始,最后一个元素索引长度-1 。
在两个范围之间找到素数的简单程序,例如在你的情况下(1到10) -
public static void main(String[] args) {
int i, flag;
int low = 0;
int high = 10;
int arr[] = new int[10];
int index = 0;
while (low < high) {
flag = 0;
for (i = 2; i <= low / 2; ++i) {
if (low % i == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
arr[index] = low;//prime number array, print it to check
index++;
}
++low;
}
}
arr 是包含素数的数组。你可以提供低值和最高值的最小值到高值。
答案 1 :(得分:0)
第一个forloop有问题。
索引将始终以0(零)开始,但不会以1开始。因此,请更改第一个for循环,如下所示
for (int starNum = 0; starNum < args.length && starNum <= 10; starNum ++){