我遇到了null java.util.ConcurrentModificationException的问题。 我在main函数中编写了所有内容,这是错误弹出的代码部分。请解释一下导致此错误的原因。
import java.util.*;
public class test
{
public static void main(String[] args)
{
try{
int l1,k1,l,k,temp11,temp22,complist,nodes,temp1,temp2,temp3,count,temp,re1,re2,re3,x,y,mul,ad,sche_nodes;
l=0;k=0;temp=0;temp1=0;temp2=0;temp3=0;count=0;l1=0;k1=0;complist=0;nodes=9;re1=5;re2=4;re3=0;mul=5;ad=4;
int parent[][]=new int[nodes][3];
int parent1[][]=new int[nodes][3];
double mult[][]=new double[mul][2];
double add[][]=new double[ad][2];
List<Integer> a1 = new ArrayList<Integer>();
Iterator it = a1.iterator();
Iterator it1= a1.iterator();
Iterator it2 = a1.iterator();
Iterator it3 = a1.iterator();
System.out.println("Scheduling begins");
parent[0][0]=1;parent[0][1]=0;parent[0][2]=0;
parent[1][0]=2;parent[1][1]=0;parent[1][2]=0;
parent[2][0]=3;parent[2][1]=0;parent[2][2]=0;
parent[3][0]=6;parent[3][1]=0;parent[3][2]=0;
parent[4][0]=8;parent[4][1]=0;parent[4][2]=0;
parent[5][0]=4;parent[5][1]=1;parent[5][2]=2;
parent[6][0]=5;parent[6][1]=3;parent[6][2]=4;
parent[7][0]=7;parent[7][1]=5;parent[7][2]=6;
parent[8][0]=9;parent[8][1]=7;parent[8][2]=8;
for(x=0;x<nodes;x++)
{
for(y=0;y<3;y++)
{
parent1[x][y]=parent[x][y];
}
}
for(x=0;x<nodes;x++)
{
for(y=0;y<3;y++)
{
System.out.print(parent[x][y]+" ");
}
System.out.println("");
}
mult[0][0]=8;mult[1][0]=6;mult[2][0]=3;mult[3][0]=2;mult[4][0]=1;
add[0][0]=9;add[1][0]=7;add[2][0]=5;add[3][0]=4;
while(complist!=nodes)
{
while(re1!=0|| re2!=0 || re3!=0)
{
if(l1!=(mul+1) && re1!=0)
{
temp11=(int)mult[l1][0];
for(x=0;x<nodes;x++)
{
if(parent[x][0]==temp11)
l=x;
}
}
if(parent[l][2]==0 && parent[l][1]==0 && l1!=(mul+1) && re1!=0)
{
a1.add((int)mult[l1][0]);
System.out.println("mult1 "+a1.size());
complist++;
re1--;
l1++;
}
else if(((parent[l][2]!=0 && parent[l][1]!=0) || (parent[l][2]==0 && parent[l][1]!=0)|| (parent[l][2]!=0 && parent[l][1]==0 )) && l1!=(mul+1) && re1!=0)
{
while(it.hasNext() )
{
Integer value=(Integer)it.next();
temp3=0;temp1=0;temp2=0;
temp=(mul+ad)*count;
if(temp3<temp)
{
if(parent[l][2]==value)
{
temp1=1;
temp3++;
}
else
temp3++;
if(parent[l][1]==value)
{
temp2=1;
}
}
}
if(temp1==1 && temp2==1)
{
a1.add((int)mult[l1][0]);
System.out.println("mult2 "+a1.size());
complist++;
re1--;
l1++;
}
else
l1++;
}
else if(l1==(mul+1) && re1!=0)
{
while(re1!=0)
{
a1.add(-1);
System.out.println("mult3 "+a1.size());
re1--;
}
}
System.out.println("End of Multiplier for "+l1+" iteration");
if(k1!=(ad+1) && re2!=0)
{
temp22=(int)add[k1][0];
for(y=0;y<nodes;y++)
{
if(parent1[y][0]==temp22)
k=y;
}
System.out.println("End of for in addition");
}
if( parent1[k][2]==0 && parent1[k][1]==0 &&k1!=(ad+1) && re2!=0)
{
System.out.println("Begin of if in addition");
a1.add((int)add[k1][0]);
System.out.println("addn1 "+a1.size());
complist++;
re2--;
k1++;
}
else if(((parent1[k][2]!=0 && parent1[k][1]!=0) || (parent1[k][2]==0 && parent1[k][1]!=0)|| (parent1[k][2]!=0 && parent1[k][1]==0 )) && k1!=(ad+1) && re2!=0)
{
while(it2.hasNext() )
{
Integer value=(Integer)it2.next();
temp3=0;temp1=0;temp2=0;
temp=(mul+ad)*count;
if(temp3<temp)
{
if(parent1[k][2]==value)
{
temp1=1;
temp3++;
}
else
temp3++;
if(parent1[k][1]==value)
temp2=1;
}
}
if(temp1==1 && temp2==1)
{
a1.add((int)add[k1][0]);
System.out.println("addn2 "+a1.size());
complist++;
re2--;
k1++;
}
else
k1++;
}
else if(k1==(ad+1) && re2!=0)
{
while(re2!=0)
{
a1.add(-2);
System.out.println("addn3 "+a1.size());
re2--;
}
}
System.out.println("End of Adder for"+k1+" iteration");
}
if(re1==0 && re2==0 && re3==0)
{
re1=5;
re2=4;
re3=0;
count++;
l1=0;k1=0;
}
}
System.out.println("mult+add "+a1.size());
sche_nodes=(a1.size()/(mul+ad));
System.out.println(" "+sche_nodes);
int sche[][]=new int[sche_nodes][mul+ad];
for(x=0;x<sche_nodes;x++)
{
for(y=0;y<(mul+ad);y++)
{
Integer value=(Integer)it1.next();
sche[x][y]=value;
}
}
System.out.println("Scheduled Array");
for(x=0;x<sche_nodes;x++)
{
for(y=0;y<(mul+ad);y++)
{
System.out.println(sche[x][y]+" ");
}
}
}
catch (Exception e){
System.err.println("Error: " + e.getMessage()+e);
}
}
}