gpt4 book ai didi

java - 使用 hashmap 和 arraylist 查找数字的因子

转载 作者:行者123 更新时间:2023-12-01 18:48:46 24 4
gpt4 key购买 nike

我有下面的程序,我正在检查数组中每个数字的因子。我需要在 HashMap 中使用数组列表。

我有以下代码 -

public class ArrayExcercise {
private static Map<Integer, ArrayList<Integer>> mapOne = new TreeMap<Integer, ArrayList<Integer>>();
private static Map<Integer, ArrayList<Integer>> mapTwo = new TreeMap<Integer, ArrayList<Integer>>();
private static ArrayList<Integer> valuesOne = new ArrayList<Integer>();
private static ArrayList<Integer> valuesTwo = new ArrayList<Integer>();

public static void main(String[] args) {
int[] randomArrayOne = RandomElementsInAnArray.generateRandomNumber(1,6);
System.out.println("The elements in the first array are: "+ Arrays.toString(randomArrayOne));
findFactors(randomArrayOne);
}

static boolean flag = true;

public static boolean findFactors(int[] arrayOne) {
for (int i = 0; i < arrayOne.length; i++) {
checkFactors(arrayOne[i]);
}

return false;
}

public static synchronized Map<Integer, ArrayList<Integer>> checkFactors(int num) {
for (int i = 2; i <= num; i++) {
if ((num % i == 0)) {
valuesOne.add(i);
mapOne.put(num, valuesOne);
}
}
return mapOne;
}

}

这里我需要帮助是在找到数字的因子后将元素添加到数组列表中。如果假设数组(输入)有元素 - 2,4,6,并且我将每个数字作为 findFactors 方法的输入传递,我希望它显示如下 -

//我排除 1,因为 1 是所有数字的因数。

2 - 2 
4 - 2,4
6 - 2,3,6

相反,我看到的输出如下 -

2 - 2,3,4,6
3 - 2,3,4,6
6 - 2,3,4,6

我知道这是我出错的地方 -

for (int i = 2; i <= num; i++) {
if ((num % i == 0)) {
valuesOne.add(i);
mapOne.put(num, valuesOne);
}
}

我将值附加到数组列表,valuesOne。我不知道如何解决它。请求有人帮忙。

最佳答案

每次调用 checkFactors 方法时,都需要重新初始化 valuesOne ArrayList

valuesOne = new ArrayList<Integer>();
for (int i = 2; i <= num; i++) {
if ((num % i == 0)) {
valuesOne.add(i);
mapOne.put(num, valuesOne);
}
}
return mapOne;

关于java - 使用 hashmap 和 arraylist 查找数字的因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com