私は一連の整数の形でユーザ入力をキャプチャしています。これは2回起こり、2つのArrayListsに格納されます。ここに私のコードはそのためです。私はlist1
とlist2
の重複から作られたlist3
を作成しようとするとネストされたforループ整数比較 - 予期しないインデックス
ArrayList<Integer> list1 = new ArrayList<Integer>();
System.out.println("Enter the first set of integers on one line, end with -1.");
Scanner scanner1 = new Scanner(System.in);
int item = 0;
while (
item != -1
) {
item = scanner1.nextInt();
list1.add(item);
}
//remove the last item on arraylist because its the -1
list1.remove(list1.size()-1);
//done making list1
//start list2
item = 0;
ArrayList<Integer> list2 = new ArrayList<Integer>();
System.out.println("Enter the first set of integers on one line, end with -1.");
Scanner scanner2 = new Scanner(System.in);
while (
item != -1
) {
item = scanner2.nextInt();
list2.add(item);
}
//remove the last item on arraylist because its the -1
list2.remove(list2.size()-1);
//end list2
私の問題が発生します。私はをそれぞれ(最初のループレベルのために)Integerを最初のリストから取って、2番目のリストのIntegersのそれぞれ(2番目のforループネスト)と比較します。すべてこの後
[10, 200, 6, 99, 3, 5, 90, 44]
[200, 56, 34, 3, 5, 87, 44, 5]
、なぜ: は、彼らは、このような、
ArrayList<Integer> list3 = new ArrayList<Integer>();
for(int i=0;i<list1.size();i++){//list1
for(int j=0;j<list2.size();j++){//list2
if(list1.get(i) == list2.get(j)){//check if same
int value = list1.get(i);
list3.add(value);
}
}//for list 2
}//for list 1
は、私はいくつかの入力を与え、プログラムを実行し、リスト変数を印刷言うように、彼らは3番目のリストに追加され、一致している必要がありますlist3
のprintline文は私に与えます:[3, 5, 5, 44]
なぜ200は無視されますか?インデックスについて何か分かりませんか?ループについて?他に何か?