내가 만든 for 루프에 문제가있는 것 같습니다.ConcurrentModificationException 받기
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.thejacksullivan.breakout.Collison.checkCollison(Collison.java:14)
at com.thejacksullivan.breakout.Ball.moveBall(Ball.java:23)
at com.thejacksullivan.breakout.Core.main(Core.java:48)
그것은에서라고 :
public class Ball {
public static Rectangle ball;
public static int x = 250;
public static int y = 200;
public static int dx = 4;
public static int dy = 4;
public static int dia = 30;
public static void moveBall(){
ball = new Rectangle(x, y, 15, 15);
if(x + dx < 0 || x + dia + dx > Core.frame.getWidth()){
dx *= -1;
}
if(y + dy < 0 || y + dia + dy > Core.frame.getHeight()) {
dy *= -1;
}
Collison.checkCollison();
x += dx;
y += dy;
}
}
나는이 문제를 해결하는 방법을 정확히 모르겠어요
for (Rectangle rect : Wall.wallRects){
if(rect.intersects(Ball.ball)){
System.out.println("Collied");
}
}
이
이 오류가 발생합니다. 나는 유사한 프로그램에서 충돌을 확인하기 위해 동일한 유형의 체크를 사용했다. 어떤 도움도 크게 감사 할 것이다.아, 그리고 오류 라인은 다음과 같습니다 당신이 알려 더 이상의 정보가 필요하면
:
for (Rectangle rect : Wall.wallRects){
Collison.checkCollison();
Ball.moveBall();
(D 난 그냥 단어 충돌 잘못 woops 맞춤법 검사 한 실현).
업데이트 : 방금 내 Collison.checkCollsion()을 내 paint() 메소드로 이동했습니다. paint 메서드에서 Wall.rects에 rect를 추가했기 때문에 올바르게 작동하지 않는다고 생각합니다. 그래서 오류가 발생했습니다. 모두에게 도움을 주셔서 감사합니다.
사람, 당신의 코드에서 어떤 경우 목록을 수정됩니다'Wall.wallRects'있는 동안 당신은리스트를 반복하려고 시도하고있다. – MadProgrammer
실제로'checkCollision()'의 전체 코드인가? – iamnotmaynard
'checkCollision'가 인수를 취하지 않는 방식은 모든 국가가 어떻게 든 글로벌하다는 것을 의미하므로 걱정이됩니다. 그래서 어디에서든지 변형 될 수 있습니다. 'Ball.ball'과'Wall.wallRects'가 더 많은 예입니다. 귀하의 전체 디자인은 정반대입니다. –