为什么在我尝试用Java填充数组时,函数会存储零?
我是Java新手,很快我就要开始一门课程了,但目前我正在独自学习。 我创建了一个函数来检查一个数字是否是素数,如果是,我将尝试使用for循环将值存储在int数组中。 该函数用于检测素数,但在存储值时,数组中会出现多个0。 我不明白为什么,在网上也找不到任何答案。 这是密码
import java.util.Arrays;
public class Exercises {
public static void main(String[] args){
int [] array = new int[10];
for(int i = 0; i < array.length; i++)
if (isPrime(i))
array[i] = i;
System.out.println(Arrays.toString(array));
}
public static boolean isPrime(int n){
if(n <= 1)
return false;
for(int i = 2; i <= n/2; i++)
if(n % i == 0)
return false;
return true;
}
}
我从中得到的结果是 [0,0,2,3,0,5,0,7,0,0]
虽然我想 [2,3,5,7,11,13,17,19,23,29]
我也用可视化工具检查过,但仍然无法理解为什么会这样。 谢谢你抽出时间
# 1 楼答案
你只给数组的素数索引赋值——也就是说,你把
2
赋值给array[2]
,把3
赋值给array[3]
,等等默认情况下,数组的所有其他索引的值保持
0
如果要分配给数组的所有索引,则需要另一个变量来跟踪数组的当前可用索引
我建议使用
while
循环而不是for
循环,因为它不足以遍历数组的索引现在输出将是