arraylist超出范围

时间:2015-10-01 17:29:27

标签: java arrays

我使用arraylist存储数据,我尝试没有任何if语句的程序从文件中读取并填充arraylis并打印它,它工作正常,但当我使用迭代和if语句和逻辑条件时它会给出异常超出了arraylist的范围,

ArrayList<String> accon = new ArrayList<String>();
        ArrayList<Double> balance = new ArrayList<Double>();
        try {
            BufferedReader Buffer = new BufferedReader(new FileReader(new File(
                    "D://transactions.txt")));
            String line = null;
            while ((line = Buffer.readLine()) != null) {
                // String arr[] = line.split(" ");
                String accn = line.substring(0, 17);
                String Case = line.substring(18, 19);

                double a = Double.parseDouble(line.substring(20));
                // System.out.print(balance.size());
                // for (int i = 0; i < accon.size(); i++) {
                int i = 0;
                System.out.print(accon.get(i).equals(accn));
                while (accon.size() >= i) {

                    if (accon.get(i).equals(accn)) {

                        if (Case.equals("D")) {
                            balance.set(i, balance.get(i) - a);

                        } else {
                            balance.set(i, balance.get(i) + a);

                        }
                    } else {
                        accon.add(accn);
                        balance.add(a);

                        // break;
                    }
                    i++;
                }

                // }

            }
            System.out.print("-------------------");
            for (int i = 0; i < accon.size(); i++) {
                System.out.println(accon.get(i));
                System.out.println(balance.get(i));
                // System.out.println(accon.size());

            }

        } catch (Exception e) {
            System.out.print("" + e);
        }

java.lang.IndexOutOfBoundsException:Index:0,Size:0

2 个答案:

答案 0 :(得分:3)

您在列表accon中没有任何元素,但您在其中使用accon.get(0)

 System.out.print(accon.get(i).equals(accn));  //here is the error

导致错误说您正在阅读0索引,但列表大小为0

答案 1 :(得分:2)

accon变量在您尝试从中获取内容时没有任何内容,此处:

System.out.print(accon.get(i).equals(accn));

在这里:

if (accon.get(i).equals(accn)) {

考虑到您的对象,错误在print命令中,并且while中的迭代将永远不会被处理:while (accon.size() >= i) {

您必须首先将对象添加到其中,以便您可以迭代并删除对象,这样您就可以离开while