Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unexpected ArrayIndexOutOfBoundsException
- public static ArrayList<Grain> FindGrains(Point[][] p){
- ArrayList<Grain> grains = new ArrayList<Grain>();
- ArrayList<Point> growthPoints = new ArrayList<Point>();
- ArrayList<Point> previousPoints = new ArrayList<Point>();
- boolean finGrainGrow = false;
- int x = -1;
- int y = -1;
- int j, k;
- int grainNum =-1;
- double stepSize = 0.5;
- while(true){
- x = -1;
- y = -1;
- growthPoints.clear();
- previousPoints.clear();
- for(int f =0; f<p.length;f++){
- for(int r =0; r<p[0].length;r++){
- if(p[r][f].getGrainNum() == -1){
- x = r;
- y = f;
- grains.add(new Grain());
- grainNum++;
- p[x][y].setGrainNum(grainNum);
- grains.get(grainNum).add(p[x][y]);
- growthPoints.add(0,p[x][y]);
- break;
- }
- }
- if (x!=-1) break;
- }
- if (x==-1) break;
- finGrainGrow = false;
- while(!finGrainGrow){
- finGrainGrow = true;
- previousPoints.clear();
- previousPoints.ensureCapacity(growthPoints.size());
- for(int q=0;q<growthPoints.size();q++){
- previousPoints.add(q,growthPoints.get(q));
- }
- growthPoints = new ArrayList<Point>();
- for(int h = 0; h<previousPoints.size(); h++){
- j = (int)(previousPoints.get(h).getX()/stepSize);
- k = (int)(previousPoints.get(h).getY()/stepSize);
- try{
- if(checkMisorientation(p[j][k],p[j-1][k]) && p[j-1][k].getGrainNum() ==-1){
- grains.get(grainNum).add(p[j-1][k]);
- growthPoints.add(p[j-1][k]);
- p[j-1][k].setGrainNum(grainNum);
- finGrainGrow = false;
- }
- }
- catch(ArrayIndexOutOfBoundsException t){
- }
- try{
- if(checkMisorientation(p[j][k],p[j+1][k]) && p[j+1][k].getGrainNum() ==-1){
- grains.get(grainNum).add(p[j+1][k]);
- growthPoints.add(p[j+1][k]);
- p[j+1][k].setGrainNum(grainNum);
- finGrainGrow = false;
- }
- }
- catch(ArrayIndexOutOfBoundsException t){
- }
- try{
- if(checkMisorientation(p[j][k],p[j][k-1]) && p[j][k-1].getGrainNum() ==-1){
- grains.get(grainNum).add(p[j][k-1]);
- growthPoints.add(p[j][k-1]);
- p[j][k-1].setGrainNum(grainNum);
- finGrainGrow = false;
- }
- }
- catch(ArrayIndexOutOfBoundsException t){
- }
- try{
- if(checkMisorientation(p[j][k],p[j][k+1]) && p[j][k+1].getGrainNum() ==-1){
- grains.get(grainNum).add(p[j][k+1]);
- growthPoints.add(p[j][k+1]);
- p[j][k+1].setGrainNum(grainNum);
- finGrainGrow = false;
- }
- }
- catch(ArrayIndexOutOfBoundsException t){
- }
- }
- }
- }
- return grains;
- }
Add Comment
Please, Sign In to add comment