Невозможно получить сообщение об ошибке в программе Java
Я решаю проблему на спой, вот URL http://www.spoj.com/problems/FACEFRND/
Но, получив сообщение об ошибке и не смог идентифицировать мою ошибку, код выглядит следующим образом:
import java.util.ArrayList;
import java.util.Scanner;
public class Facefrnd {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
ArrayList<Integer> f = new ArrayList<Integer>();
ArrayList<Integer> fof = new ArrayList<Integer>();
int n, t, id, m;
n = sc.nextInt();
t = n;
while(t>0){
t--;
id = sc.nextInt();
m = sc.nextInt();
f.add(id);
if(fof.contains(id))
fof.remove(id);
for(int j = 0; j < m; j++){
id = sc.nextInt();
if(!f.contains(id))
fof.add(id);
}
}
System.out.print(fof.size());
}
}
Ошибка с примером ввода:
3
2334 5 1256 4323 7687 3244 5678
1256 2 2334 7687
4323 5 2334 5678 6547 9766 9543 Исключение в потоке "main" java.lang.IndexOutOfBoundsException: Индекс: 1256, размер: 5
в java.util.ArrayList.rangeCheck(ArrayList.java:635)
в java.util.ArrayList.remove (ArrayList.java:474)
at sampleproject.Facefrnd.main (Facefrnd.java:22)
1 ответ
Arraylist.remove()
метод для ArrayLists
типа Integer
по умолчанию используется метод удаления, который принимает индекс. Для того, чтобы удалить его, вы можете сделать:
fof.remove(new Integer(id));
Это гарантирует, что remove(Object o)
метод вызывается вместо.
Образец кода:
ArrayList<Integer> test = new ArrayList<Integer>();
test.add(123);
test.remove(new Integer(123));
System.out.println(test.size());
Это выведет "0".