数组输出中的随机零

时间:2017-02-08 02:33:46

标签: 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) {

        }

        else {

            array[x] = x;

    }
    }
    System.out.println(Arrays.toString(array));
}

}

6 个答案:

答案 0 :(得分:0)

您只填充数组[x]中的数组点,所以当它不是素数时,数组位置只剩下0。

编辑:fyi你的代码发现奇数不是素数。

答案 1 :(得分: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));
 }
}

但是,您的代码是 正确方式来查找原始数字。

另一方面,对于打印只包含prim数字的数组,您可以将每个prim数字添加到一个新数组并打印出该数组。

答案 2 :(得分:0)

使用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);
}

输出

[1, 3, 5, 7, 9]

只是一个注释,isPrime实际上并没有做任何无用的变量 并且Prime搜索逻辑也不满

答案 3 :(得分:0)

您似乎正在重新使用您不应该使用的变量。你的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;
}

我不知道是否完全正确地计算素数的函数,但如果它错了就非常接近。

src为素数calc:http://www.mkyong.com/java/how-to-determine-a-prime-number-in-java/

答案 4 :(得分:0)

对于0n之间的数字,有一半是偶数,一半是奇数,所以你只能找到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++;
    }
}

,在Java 8+中,您可以使用IntStream.filter之类的

进行此操作
int[] array = IntStream.range(0, n).filter(x -> x % 2 != 0).toArray();

答案 5 :(得分:0)

1)你的数组长度需要缩短,1到10之间只有5个奇数.2)Prime在你的情况下没用,所以只需在索引中添加任何奇数。 您使用ArrayList,因为它们不允许任何未填充的索引初始化为0,但是,数组会将0分配给未赋值的任何索引。

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