配列内の各数値の因数をチェックする以下のプログラムがあります。ハッシュマップ内で arraylist を使用する必要があります。
私は以下のコードを持っています -
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);
}
}
arrayList、valuesOne に値を追加しています。修正方法がわかりません。誰かに助けを求めてください。