从随机数组中打印新的素数数组?
我是一名 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个测试的目的是什么?
array[i] % array[i]
将始终为 0,因此您的测试始终返回 True。您不应该使用以下内容吗?
编辑:
正如 Ravi 指出的那样,您永远不会使用临时数组!我认为当更正的
ifarray[i] = array[j];
更改为temp[j] = array[i];
代码>测试为真。What is the purpose of this test?
array[i] % array[i]
will always be 0 so your test always returns True.Shouldn't you instead use the following?
Edit:
And as Ravi points out, you don't ever use your temp array! I think you need to change
array[i] = array[j];
totemp[j] = array[i];
when the correctedif
test is True.