【问题标题】:Printing a new array of primes from a random array?从随机数组中打印一个新的素数数组?
【发布时间】:2011-04-21 10:22:19
【问题描述】:

我是 3 周前开始使用 java 的初学者,我对这段代码有一些问题。

在主要方法中,我有一个包含 10 个元素的数组。 我已经做了好几种喜欢的方法

public static void println(int[] array) ------ 打印和排列

public static boolean isPrime(int el) ----------- 主要测试。返回真或假

public static int countPrimes(int[] array) --- 返回数组中素数的个数。

这是数组

int[] array = new int{7,5,7,2,11,-4,5,,10,2}

我遇到问题的方法是:

public static int[] primesInArray(int[] array)
  {
   int n = array.length;
   int[] temp = new int[countPrimes(array)];  
   int j = 0;

   for(int i = 0; i < n; i++)
     {
       if(isPrime(array[i]))
       { 
         temp[j] = array[i];
         j= j +1;
       }
     }
     return temp;
  }

它应该返回一个由 7 个数字组成的数组,例如 {7,5,7,2,11,5,2} 但是我取回了原始数组。

我做错了什么。

【问题讨论】:

  • 我没有看到你在哪里使用临时数组?这个条件 "array[i] % array[i] == 1" 总是评估为真。逻辑似乎有缺陷

标签: arrays methods static primes


【解决方案1】:

这个测试的目的是什么?

if(array[i] % array[i] == 0 || array[i] % array[i] == 1)

array[i] % array[i] 将始终为 0,因此您的测试始终返回 True。

你不应该改用下面的吗?

if (isPrime(array[i]))

编辑: 正如 Ravi 指出的那样,您永远不会使用您的临时数组!我认为当更正的 if 测试为 True 时,您需要将 array[i] = array[j]; 更改为 temp[j] = array[i];

【讨论】:

  • 谢谢你们,我也更正了 primetest 和 "temp[j]" 数组。我现在工作得很好
猜你喜欢
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2019-01-25
  • 2010-12-30
  • 1970-01-01
  • 2013-05-06
相关资源
最近更新 更多