Java 使用hashmap和arraylist查找数字的因子
我有下面的程序,其中我检查数组中每个数字的因子。我需要在hashmap中使用arraylist 我有以下代码-Java 使用hashmap和arraylist查找数字的因子,java,Java,我有下面的程序,其中我检查数组中每个数字的因子。我需要在hashmap中使用arraylist 我有以下代码- public class ArrayExcercise { private static Map<Integer, ArrayList<Integer>> mapOne = new TreeMap<Integer, ArrayList<Integer>>(); private static Map<Integer, ArrayLis
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 - 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);
}
}
对于(int i=2;i您需要在每次调用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;
valuesOne=newarraylist();
对于(int i=2;i您需要在每次调用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;
valuesOne=newarraylist();
对于(inti=2;i,尽管我会以不同的方式处理这个问题,如果你只写
valuesOne = new ArrayList<Integer>();
valuesOne=newarraylist();
在checkFactors()
方法的开头,您将获得所需的输出,而不会对当前代码进行太多更改。尽管如果您只编写
valuesOne = new ArrayList<Integer>();
valuesOne=newarraylist();
在checkFactors()
方法的开头,您将获得所需的输出,而不会对当前代码进行太多更改。好的,很抱歉我忽略了这一点。简单修复。谢谢hoaz。好的,很抱歉我忽略了这一点。简单修复。谢谢hoaz。