Невозможно получить сообщение об ошибке в программе 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".

Другие вопросы по тегам