Java如何将for循环中的整除结果合并为一个完整数组
问题分析
原代码的逻辑是每次匹配到整除数时,直接生成单元素数组打印,所以会输出多个独立的单元素数组结构,不符合合并为一个数组输出的需求。
修改思路
- 新增动态集合存储所有符合要求的整除数,避免每次循环单独打印
- 循环结束后将集合转换为整数数组,统一调用格式化打印方法
修改后完整代码
方案1:使用List动态存储(推荐,无需两次遍历)
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class DivisorTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter number: "); int a = sc.nextInt(); // 用List动态存储符合条件的结果 List<Integer> divisorList = new ArrayList<>(); for (int i = 1; i < a; i++) { if (a % i == 0) { divisorList.add(a / i); } } // List转数组后统一打印 Integer[] resultArr = divisorList.toArray(new Integer[0]); System.out.println(Arrays.toString(resultArr)); sc.close(); } }
方案2:不使用集合,纯数组实现
如果不想引入集合类,可以先统计因数个数再初始化数组,需要两次遍历:
import java.util.Arrays; import java.util.Scanner; public class DivisorTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter number: "); int a = sc.nextInt(); // 第一次遍历统计因数个数 int count = 0; for (int i = 1; i < a; i++) { if (a % i == 0) count++; } // 初始化对应长度的数组 int[] resultArr = new int[count]; int index = 0; // 第二次遍历存值 for (int i = 1; i < a; i++) { if (a % i == 0) { resultArr[index++] = a / i; } } System.out.println(Arrays.toString(resultArr)); sc.close(); } }
测试验证
输入68时,两种方案的输出结果均为[68, 34, 17, 4, 2],和需求完全匹配。
内容的提问来源于stack exchange,提问作者Proximo_224
相关产品推荐
相关产品推荐

