You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:36:08