Java 数组输出中的随机零

Java 数组输出中的随机零,java,arrays,zero,Java,Arrays,Zero,我试图得到一个奇数在1到10之间的数组。除了这些随机出现的零外,一切正常: [0,1,0,3,0,5,0,7,0,9] 有没有办法阻止这一切?谢谢你的帮助 public static void main(String[] args) { int [] array = new int[10]; for (int x = 0; x < array.length; x++) { if (x % 2 == 0) { } el

我试图得到一个奇数在1到10之间的数组。除了这些随机出现的零外,一切正常:

[0,1,0,3,0,5,0,7,0,9]

有没有办法阻止这一切?谢谢你的帮助

public static void main(String[] args) {

    int [] array = new int[10];


    for (int x = 0; x < array.length; x++) {
        if (x % 2 == 0) {

        }

        else {

            array[x] = x;

    }
    }
    System.out.println(Arrays.toString(array));
}
publicstaticvoidmain(字符串[]args){
int[]数组=新的int[10];
对于(int x=0;x

}

您只在数组[x]处填充数组点,因此当它不是素数时,数组位置仅保留为0


编辑:仅供参考您的代码查找奇数而不是素数。

如果您想解决打印问题,请尝试以下操作:

public static void main(String[] args) {

   int [] array = new int[10];
   boolean isPrime = true; // you haven't used this variable!

   for (int x = 0; x < array.length; x++) {
      if (x % 2 == 0) {
         isPrime = false; // do you really need this block?
      }

     else {
        array[x] = x;
        System.out.print(", "+x+"");  // print the prim every time you find it.
     }
   }
  //System.out.println(Arrays.toString(array));
 }
}
publicstaticvoidmain(字符串[]args){
int[]数组=新的int[10];
boolean isPrime=true;//您尚未使用此变量!
对于(int x=0;x
但是,您的代码不是查找原始数字的正确方法

另一方面,如果打印的数组仅包含prim编号,则可以将每个prim编号添加到新数组中并打印出该数组。

使用ARRAYLIST

int max = 10;
ArrayList<Integer> array = new ArrayList<Integer>();

for (int x = 0; x < max; x++) {
    if (x % 2 != 0) {
        array.add(x);
    }
}
System.out.println(array);
}
请注意,iPrime并没有做任何事情,实际上它是一个无用的变量
主搜索逻辑也没有满

您似乎在使用一个不应该使用的变量。for循环仅使用其索引填充数组的奇数插槽

我还建议使用一个列表,比如ArrayList,而不是普通数组

基本上,我建议如下:

public static void main(String[] args) {

    List<Integer> primeNumbers = new ArrayList<Integer>();
    int max = 100;

    for (int x = 0; x < max; x++)
    {
        if (isPrime(x))
        {
            primeNumbers.add(Integer.valueOf(x));
        }
    }

    for (Integer i : primeNumbers)
    {
        System.out.print(i.intValue() + ", ");
    }
}

private static boolean isPrime(int number)
{
    for (int n = 2; n < number; n++)
    {
        if (number % n == 0)
            return false;
    }

    return true;
}
publicstaticvoidmain(字符串[]args){
列表素数=新的ArrayList();
int max=100;
对于(int x=0;x
我不知道计算素数的函数是否完全正确,但如果它是错误的,它就非常接近了


素数计算的src:

对于
0
n
之间的数字,将有一半是偶数,一半是奇数,因此您只能找到
n/2
奇数。您不需要临时变量,只需测试
%2!=0
中包含类似的内容

final int n = 10;
int[] array = new int[n / 2];
for (int x = 0, pos = 0; x < n; x++) {
    if (x % 2 != 0) {
        array[pos] = x;
        pos++;
    }
}
1) 您的数组长度需要缩短,1到10之间只有5个奇数。2) 素数在您的情况下是无用的,所以只需在索引中添加奇数即可。 您可以使用ArrayList,因为它们不允许任何未填充的索引从init到0,但是,数组会将0分配给任何未赋值的索引

int [] array = new int[5];
for(int i=0; i<array.length; i++){
     if(x % 2 != 0) {
        array[x]=x
    }
}
int[]数组=新的int[5];

对于(int i=0;i
9==3*3
(并且不是素数),
2
可以被
2
(但是是素数)整除。这在什么方面可以工作?你是指奇数吗?
System.out.println(IntStream.range(0,10).filter(x->x%2!=0).boxed().collector(collector.toList())
短语中有一个拼写错误,我的意思是奇怪。谢谢你指出短语中有一个拼写错误,我的意思是奇怪。谢谢你指出短语中有一个拼写错误,我的意思是奇怪。我编辑了原始问题。谢谢你指出短语中有一个拼写错误,我的意思是奇怪。我编辑了原始问题。谢谢谢谢你指出这一点
int[] array = IntStream.range(0, n).filter(x -> x % 2 != 0).toArray();
int [] array = new int[5];
for(int i=0; i<array.length; i++){
     if(x % 2 != 0) {
        array[x]=x
    }
}