【问题标题】:Count prime numbers in arraylist计算arraylist中的素数
【发布时间】:2018-02-17 14:03:31
【问题描述】:

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

我需要使用这个方法:

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

}

到目前为止,我想出了这段代码:

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;

}

但我不确定它是否接近完成,因为我不知道如何从 Main 调用它。 问候

【问题讨论】:

  • 在第一行代码中你丢弃了输入!您不应该查看传递给该方法的整数吗?我建议你实现static boolean isPrime(int i) { ... },然后执行return (int) list.stream().filter(YourClass::isPrime).count(); 之类的操作。
  • 你只需要调用printcountnum 方法。就是这样
  • n 在这里总是为零
  • @aioobe 你能详细说明一下吗?恐怕我不确定你的意思。
  • “您正在丢弃输入”...您有一个列表作为参数,然后您立即将值重新分配给一个完全不同的空列表。你的 for 循环不会循环任何东西,并且什么也不计数

标签: java arraylist methods


【解决方案1】:

当您编写此list = new ArrayList&lt;Integer&gt;(); 时,您将丢弃作为参数传递给方法的列表。这就是您可以从 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2020-04-01
    • 1970-01-01
    • 2015-03-29
    • 2021-12-03
    • 2016-08-30
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多