Java arraylist超出范围
我使用arraylist来存储数据,我尝试在没有任何if语句的情况下从文件中读取并填充arraylist并打印它,它工作正常,但当我使用迭代和if语句以及逻辑条件时,它会给出超出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<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为空,您可能期望出现什么其他行为?请帮助我们指出错误发生在上的代码行。请格式化代码,删除测试注释行,并指定异常发生的位置。