Java arraylist超出范围

Java arraylist超出范围,java,arrays,Java,Arrays,我使用arraylist来存储数据,我尝试在没有任何if语句的情况下从文件中读取并填充arraylist并打印它,它工作正常,但当我使用迭代和if语句以及逻辑条件时,它会给出超出arraylist范围的异常 ArrayList<String> accon = new ArrayList<String>(); ArrayList<Double> balance = new ArrayList<Double>(); tr

我使用arraylist来存储数据,我尝试在没有任何if语句的情况下从文件中读取并填充arraylist并打印它,它工作正常,但当我使用迭代和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);
        }
ArrayList accon=new ArrayList();
ArrayList余额=新的ArrayList();
试一试{
BufferedReader Buffer=新BufferedReader(新文件读取器)(新文件读取器(
“D://transactions.txt”);
字符串行=null;
而((line=Buffer.readLine())!=null){
//字符串arr[]=line.split(“”);
字符串accn=行.子字符串(0,17);
字符串大小写=行。子字符串(18,19);
double a=double.parseDouble(行.子字符串(20));
//System.out.print(balance.size());
//对于(int i=0;i=i){
如果(会计获取(i)等于(会计)){
如果(情况等于(“D”)){
balance.set(i,balance.get(i)-a);
}否则{
balance.set(i,balance.get(i)+a);
}
}否则{
会计增加(会计科目);
余额.添加(a);
//中断;
}
i++;
}
// }
}
系统输出打印(“------------------------”;
对于(int i=0;i

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

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

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

导致错误的原因是您正在读取
0
索引,但列表大小为
0

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

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

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

当您尝试从
accon
变量中获取内容时,该变量没有任何内容,如下所示:

System.out.print(accon.get(i).equals(accn));
在这里:

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


您必须首先向其添加对象,然后才能迭代并删除对象,这样您就可以退出
,而
accon
变量在您尝试从中获取内容时没有任何内容,如下所示:

System.out.print(accon.get(i).equals(accn));
在这里:

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


您必须首先向其中添加对象,然后才能迭代并删除对象,以便在

accon为空时退出
,您还可能期望出现什么其他行为?请通过指示发生错误的代码行来帮助我们请格式化您的代码,删除测试注释行并指定异常发生的位置。accon为空,您可能期望出现什么其他行为?请帮助我们指出错误发生在上的代码行。请格式化代码,删除测试注释行,并指定异常发生的位置。