从文件创建2D ArrayList

时间:2012-03-22 01:24:05

标签: java

我正试图从一个看起来像这样的文件中获取整数:

1;2;3;4;
5;6;7;8;
9;10;11;12;

进入2D数组列表。我不断得到IndexOutOfBoundsException

ArrayList<ArrayList<Integer>> myList = new ArrayList<>();
                myList.add(new ArrayList<Integer>());
        int i = 0;
        int j = 0;
        try
        {
            FileReader fin = new FileReader("data.txt");
            Scanner scan = new Scanner(fin);
            while(scan.hasNext())
            {
                if(scan.hasNextInt())
                {
                    myList.get(j).add(scan.nextInt());
                    i++;
                }
                else if("\\n".equals(scan.next()))
                {
                    myList.add(new ArrayList<Integer>());
                    j++;
                }
                else
                {
                    System.out.println("Only use numbers!");
                }
            }

        }catch(Exception e){}

    System.out.println(myList.get(0).get(2));

这是什么问题?

3 个答案:

答案 0 :(得分:0)

您应该做的第一件事是至少在catch块中打印堆栈跟踪。从它的外观来看,你正在那里的某个地方炸毁并吞下异常,所以你甚至不知道你的程序是错误的。

答案 1 :(得分:0)

你确定

吗?
 else if("\\n".equals(scan.next()))
            {
                myList.add(new ArrayList<Integer>());
                j++;
            }

部分?我本以为它会是“\ n”。另一种方法是使用您的扫描仪并抓住整行,然后解析该行。我快速查看代码表明了其他if语句永远不会被执行的理论......?

答案 2 :(得分:0)

此行中出现错误

 System.out.println(myList.get(0).get(2));

发生了什么事情,这部分myList.get(0)返回一个大小为0的空列表,你希望get(2)得到它的第三个元素,所以抛出了IndexOutOfBoundsException,另外你必须在尝试之前检查大小得到它所以你没有这样的错误,因为你的代码不会将整数添加到列表中。