Java 在arraylist中计算素数

Java 在arraylist中计算素数,java,arraylist,methods,Java,Arraylist,Methods,我有一个任务,需要计算数组列表中的素数。在Stackoverflow上有几种解决方案,但我需要用另一种方式来解决。我在方法头本身中初始化数组列表,而不是在主体中。我相信这是有区别的,但我可能错了 我需要使用这种方法: public static int countPrimeNumbers(ArrayList<Integer> list) { } 公共静态int countPrimeNumbers(ArrayList列表){ } 到目前为止,我提出了以下代码: public st

我有一个任务,需要计算数组列表中的素数。在Stackoverflow上有几种解决方案,但我需要用另一种方式来解决。我在方法头本身中初始化数组列表,而不是在主体中。我相信这是有区别的,但我可能错了

我需要使用这种方法:

public static int countPrimeNumbers(ArrayList<Integer> list) {

}
公共静态int countPrimeNumbers(ArrayList列表){
}
到目前为止,我提出了以下代码:

public static int countPrimeNumbers(ArrayList<Integer> list) {
    list = new ArrayList<Integer>();

    int n = 0;
    int count = 0;
    System.out.println(list);

    for(int i=2; i<list.size(); i++) {
        if(n%i==0)
            count++;
    }
    return count;

}
公共静态int countPrimeNumbers(ArrayList列表){
列表=新的ArrayList();
int n=0;
整数计数=0;
系统输出打印项次(列表);

对于(int i=2;i当您编写此
list=new ArrayList();
时,您将丢弃作为参数传入方法的列表。这是您可以从main方法调用它的方式

private static int countPrimeNumbers(List<Integer> list) {
    int count = 0;
    for (int i : list) {
        if (isPrime(i)) {
            count += 1;
        }
    }
    return count;
}

// FYI... logic to find prime number can further be optimised, i will leave it upto you
private static boolean isPrime(int number) {
    for(int i = 2; i < number; i++) {
        if(number % i == 0) {
            return false;
        }
    }
    return true;
}

public static void main(String args[]) {
    Integer[] numbers = {2, 3, 5, 6, 10};
    List<Integer> list = Arrays.asList(numbers);

    int result = countPrimeNumbers(list);

    System.out.println("Number of prime numbers = " + result);
}
private static int countPrimeNumbers(列表){
整数计数=0;
用于(int i:列表){
如果(i){
计数+=1;
}
}
返回计数;
}
//仅供参考…寻找素数的逻辑可以进一步优化,我将把它留给你们
专用静态布尔值iPrime(整数){
for(int i=2;i
当您编写此
list=new ArrayList();
时,您将丢弃作为参数传递给方法的列表。这是您可以从main方法调用它的方式

private static int countPrimeNumbers(List<Integer> list) {
    int count = 0;
    for (int i : list) {
        if (isPrime(i)) {
            count += 1;
        }
    }
    return count;
}

// FYI... logic to find prime number can further be optimised, i will leave it upto you
private static boolean isPrime(int number) {
    for(int i = 2; i < number; i++) {
        if(number % i == 0) {
            return false;
        }
    }
    return true;
}

public static void main(String args[]) {
    Integer[] numbers = {2, 3, 5, 6, 10};
    List<Integer> list = Arrays.asList(numbers);

    int result = countPrimeNumbers(list);

    System.out.println("Number of prime numbers = " + result);
}
private static int countPrimeNumbers(列表){
整数计数=0;
用于(int i:列表){
如果(i){
计数+=1;
}
}
返回计数;
}
//仅供参考…寻找素数的逻辑可以进一步优化,我将把它留给你们
专用静态布尔值iPrime(整数){
for(int i=2;i
在第一行代码中,您正在丢弃输入!您不应该查看传递给该方法的整数吗?我建议您实现一个
静态布尔值isPrime(int I){…}
然后执行类似
的操作返回(int)list.stream().filter(YourClass::isPrime.count())
。您只需调用
printcountnum
方法即可。这就是
n
始终为零here@aioobe请你详细说明一下好吗?恐怕我不太清楚你的意思。“你在放弃输入”…您有一个列表作为参数,然后立即将该值重新分配给一个完全不同的空列表。您的for循环将在放弃输入的第一行代码中不循环任何内容,并且不计算任何内容!您不应该查看传递给该方法的整数吗?我建议您实现一个
静态布尔值素数(inti){…}
然后执行类似于
return(int)list.stream().filter(YourClass::isPrime.count();
的操作。只需调用
printcountnum
方法即可。这就是
n
始终为零here@aioobe请你详细说明一下好吗?恐怕我不太清楚你的意思。“你在放弃输入”…将列表作为参数,然后立即将值重新分配给完全不同的空列表。for循环将不循环任何内容,也不计算任何内容