Java中如何在ArrayList动态数组处理函数中调用布尔型质数判断方法
代码修改与整合说明
你的代码逻辑框架是对的,只需要做小调整就能完成需求,两种实现方式如下:
方式1:保留prime_check方法(更推荐,逻辑拆分清晰、可复用)
你原来的代码只有一个语法错误:prime_array里的if ( = true)漏写了判断条件,修复后就能正常运行,修改后的prime_array代码如下:
public static ArrayList<Integer> prime_array(ArrayList<Integer> listA2) { ArrayList <Integer> nums1=new ArrayList<Integer>(); for (int n1: listA2) { // 直接调用你写好的prime_check方法判断质数 if (prime_check(n1)) { nums1.add(n1); } } return nums1; }
运行前注意把main方法里的new ArrayList<Integer(Arrays.asList(补全尖括号,改为new ArrayList<Integer>(Arrays.asList(,否则会编译报错。
方式2:把prime_check逻辑完全整合进prime_array
如果不需要单独的质数判断方法,直接把判断逻辑搬到遍历循环里即可,不需要再单独定义prime_check方法,整合后的完整代码如下:
import java.util.ArrayList; import java.util.Arrays; public class notes { public static void main(String[] args) { ArrayList <Integer> listA2=new ArrayList<Integer>(Arrays.asList(5,6,7,8,10,13,17,19,20,26,12,31)); System.out.println(prime_array(listA2)); } public static ArrayList<Integer> prime_array(ArrayList<Integer> listA2) { ArrayList <Integer> nums1=new ArrayList<Integer>(); // 遍历输入列表的每个数字 for (int n1: listA2) { // 这里直接复用原来prime_check的判断逻辑 boolean isPrime = true; if(n1 <= 1) { isPrime = false; } else { for (int i = 2; i<= n1/2; i++) { if ((n1 % i) == 0) { isPrime = false; break; } } } // 是质数就加入结果列表 if (isPrime) { nums1.add(n1); } } return nums1; } }
内容的提问来源于stack exchange,提问作者mzz
相关产品推荐
相关产品推荐

