从随机数组中打印新的素数数组?

发布于 2024-09-26 01:35:33 字数 866 浏览 4 评论 0原文

我是一名 Java 初学者,三周前开始,我在使用这段代码时遇到了一些问题。

在 main 方法中,我有一个包含 10 个元素的数组。 我已经制作了几种方法,例如

public static void println(int[] array) ------ 来打印和数组

public static boolean isPrime(int el) ----------- 素数测试。返回 true 或 false

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} 但我却取回了原始数组。

我做错了什么。

Hy there i a beginner in java started 3 weeks ago, im having some problems with this code.

in the main method i have an array containing 10 elements.
i've already made several methods to like

public static void println(int[] array) ------ to print and array

public static boolean isPrime(int el) ----------- prime test. returns true or false

public static int countPrimes(int[] array) --- returns back the number of primes in the array.

this is the array

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

the method im having problems with is:

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;
  }

it should return an array of 7 numbers like this {7,5,7,2,11,5,2}
but instead i get the original array back.

what am i doing wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌若浮生 2024-10-03 01:35:33

这个测试的目的是什么?

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

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

您不应该使用以下内容吗?

if (isPrime(array[i]))

编辑:
正如 Ravi 指出的那样,您永远不会使用临时数组!我认为当更正的 ifarray[i] = array[j]; 更改为 temp[j] = array[i];代码>测试为真。

What is the purpose of this test?

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

array[i] % array[i] will always be 0 so your test always returns True.

Shouldn't you instead use the following?

if (isPrime(array[i]))

Edit:
And as Ravi points out, you don't ever use your temp array! I think you need to change array[i] = array[j]; to temp[j] = array[i]; when the corrected if test is True.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文