Guest User

Untitled

a guest
Aug 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. Unexpected ArrayIndexOutOfBoundsException
  2. public static ArrayList<Grain> FindGrains(Point[][] p){
  3. ArrayList<Grain> grains = new ArrayList<Grain>();
  4. ArrayList<Point> growthPoints = new ArrayList<Point>();
  5. ArrayList<Point> previousPoints = new ArrayList<Point>();
  6. boolean finGrainGrow = false;
  7. int x = -1;
  8. int y = -1;
  9. int j, k;
  10. int grainNum =-1;
  11. double stepSize = 0.5;
  12.  
  13. while(true){
  14. x = -1;
  15. y = -1;
  16.  
  17. growthPoints.clear();
  18. previousPoints.clear();
  19.  
  20. for(int f =0; f<p.length;f++){
  21. for(int r =0; r<p[0].length;r++){
  22. if(p[r][f].getGrainNum() == -1){
  23. x = r;
  24. y = f;
  25. grains.add(new Grain());
  26. grainNum++;
  27. p[x][y].setGrainNum(grainNum);
  28. grains.get(grainNum).add(p[x][y]);
  29. growthPoints.add(0,p[x][y]);
  30. break;
  31. }
  32. }
  33. if (x!=-1) break;
  34. }
  35. if (x==-1) break;
  36.  
  37. finGrainGrow = false;
  38.  
  39. while(!finGrainGrow){
  40.  
  41. finGrainGrow = true;
  42. previousPoints.clear();
  43. previousPoints.ensureCapacity(growthPoints.size());
  44. for(int q=0;q<growthPoints.size();q++){
  45. previousPoints.add(q,growthPoints.get(q));
  46. }
  47. growthPoints = new ArrayList<Point>();
  48.  
  49. for(int h = 0; h<previousPoints.size(); h++){
  50. j = (int)(previousPoints.get(h).getX()/stepSize);
  51. k = (int)(previousPoints.get(h).getY()/stepSize);
  52. try{
  53. if(checkMisorientation(p[j][k],p[j-1][k]) && p[j-1][k].getGrainNum() ==-1){
  54. grains.get(grainNum).add(p[j-1][k]);
  55. growthPoints.add(p[j-1][k]);
  56. p[j-1][k].setGrainNum(grainNum);
  57. finGrainGrow = false;
  58. }
  59. }
  60. catch(ArrayIndexOutOfBoundsException t){
  61. }
  62. try{
  63. if(checkMisorientation(p[j][k],p[j+1][k]) && p[j+1][k].getGrainNum() ==-1){
  64. grains.get(grainNum).add(p[j+1][k]);
  65. growthPoints.add(p[j+1][k]);
  66. p[j+1][k].setGrainNum(grainNum);
  67. finGrainGrow = false;
  68. }
  69. }
  70. catch(ArrayIndexOutOfBoundsException t){
  71. }
  72. try{
  73. if(checkMisorientation(p[j][k],p[j][k-1]) && p[j][k-1].getGrainNum() ==-1){
  74. grains.get(grainNum).add(p[j][k-1]);
  75. growthPoints.add(p[j][k-1]);
  76. p[j][k-1].setGrainNum(grainNum);
  77. finGrainGrow = false;
  78. }
  79. }
  80. catch(ArrayIndexOutOfBoundsException t){
  81. }
  82. try{
  83. if(checkMisorientation(p[j][k],p[j][k+1]) && p[j][k+1].getGrainNum() ==-1){
  84. grains.get(grainNum).add(p[j][k+1]);
  85. growthPoints.add(p[j][k+1]);
  86. p[j][k+1].setGrainNum(grainNum);
  87. finGrainGrow = false;
  88. }
  89. }
  90. catch(ArrayIndexOutOfBoundsException t){
  91. }
  92. }
  93.  
  94. }
  95. }
  96. return grains;
  97. }
Add Comment
Please, Sign In to add comment