我有一个初学者在3周前开始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}
但相反,我得到了原来的阵列。
答案 0 :(得分:1)
此测试的目的是什么?
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];
测试为True时,您需要将temp[j] = array[i];
更改为if
。