Arrays 从随机数组打印新的素数数组?
为什么我是3周前开始学习java的初学者,我对这段代码有一些问题 在main方法中,我有一个包含10个元素的数组。 我已经做了一些喜欢的方法Arrays 从随机数组打印新的素数数组?,arrays,methods,static,primes,Arrays,Methods,Static,Primes,为什么我是3周前开始学习java的初学者,我对这段代码有一些问题 在main方法中,我有一个包含10个元素的数组。 我已经做了一些喜欢的方法 publicstaticvoidprintln(int[]数组)----打印和数组 公共静态布尔值isPrime(int-el)--------素数测试。返回true或false 公共静态int countPrimes(int[]数组)——返回数组中的素数 这是数组 int[] array = new int{7,5,7,2,11,-4,5,,10,2}
publicstaticvoidprintln(int[]数组)
----打印和数组
公共静态布尔值isPrime(int-el)
--------素数测试。返回true或false
公共静态int countPrimes(int[]数组)
——返回数组中的素数
这是数组
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;
}
公共静态int[]primesInArray(int[]array)
{
int n=数组长度;
int[]temp=新的int[countPrimes(数组)];
int j=0;
对于(int i=0;i
它应该返回这样一个由7个数字组成的数组{7,5,7,2,11,5,2}
但是我得到的是原始数组
我做错了什么 此测试的目的是什么
if(array[i] % array[i] == 0 || array[i] % array[i] == 1)
array[i]%array[i]
将始终为0,因此您的测试总是返回True
你不应该使用下面的方法吗
if (isPrime(array[i]))
编辑:
正如拉维所指出的,你永远不会使用你的临时数组!我认为您需要更改
array[I]=array[j]代码>到温度[j]=数组[i]代码>当更正的if
测试为真时。我看不出您在哪里使用临时数组?此条件“array[i]%array[i]==1”将始终计算为true。逻辑似乎有缺陷谢谢你们,我也修正了primetest和“temp[j]”数组。我现在工作得很好