无法在Java程序中收到错误消息

时间:2014-10-06 19:15:28

标签: java range-checking

我正在解决有关spoj的问题,这里是网址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

     

at java.util.ArrayList.rangeCheck(ArrayList.java:635)

     

at java.util.ArrayList.remove(ArrayList.java:474)

     

在sampleproject.Facefrnd.main(Facefrnd.java:22)

1 个答案:

答案 0 :(得分:1)

类型为Arraylist.remove()的{​​{1}}的{​​{1}}方法默认为删除index。要删除它,您可以执行以下操作:

ArrayLists

这可确保调用Integer方法。

示例代码:

fof.remove(new Integer(id));

这将打印&#34; 0&#34;。