Я хочу стереть круг, как только на него нажмут. Однако всякий раз, когда я нажимаю на нее, ничего не происходит

#java

#java

Вопрос:

Итак, это класс, в котором я создаю круги, которые отлично работают.

 public class CircleAnimations {

    private ArrayList<Circle> circles; // the circles to animate
    private int size; // canvas width and height (will be square)
    private Random rng; // use to make random numbers

    /** create a drawing pane of a particular size */
    public CircleAnimations(int s) {
        circles = new ArrayList<>();
        size = s;
        rng = new Random();

//don't mess with this
        StdDraw.setCanvasSize(size, size); // set up drawing canvas
        StdDraw.setXscale(0, size); // <0, 0> is bottom left. <size-1, size-1> is top right
        StdDraw.setYscale(0, size);
    }

    public void drawCircle() {
        for (int i = 0; i < circles.size(); i  ) {
            circles.get(i).draw();
        }
    }

    public void addCircle() {
        circles.add(new Circle(rng.nextInt(size - 1), rng.nextInt(size - 1), rng.nextInt(75),
                new Color(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255))));
        circles.add(new Circle(rng.nextInt(size - 1), rng.nextInt(size - 1), rng.nextInt(75),
                new Color(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255))));
        circles.add(new Circle(rng.nextInt(size - 1), rng.nextInt(size - 1), rng.nextInt(75),
                new Color(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255))));
        drawCircle();
    }

    public void removeClicked() {
        addCircle();
        while (circles.size() > 0) {
            for (int i = circles.size() - 1; i > 0; i--) {
                double mouseXPos = StdDraw.mouseX();
                double mouseYPos = StdDraw.mouseY();
                if (StdDraw.isMousePressed()) {
                    if (mouseXPos < circles.get(i).getX()   circles.get(i).getRadius()
                            || mouseXPos > circles.get(i).getX() - circles.get(i).getRadius()) {
                        if (mouseYPos < circles.get(i).getY()   circles.get(i).getRadius()
                                || mouseYPos > circles.get(i).getX() - circles.get(i).getRadius()) {
                            circles.remove(i);
                            drawCircle();
                        }
                    }
                }

            }

        }

    }
}
 

Метод удаления круга, на который был нажат, по какой-то причине не работает.

Комментарии:

1. Является ли выбрасывание исключением? Например, ConcurrentModificationException или какая у вас ошибка?

2. Вероятно, это ошибка алгоритма, поскольку код компилируется и работает нормально, просто когда я нажимаю на круг, он не удаляется.

3. Если вы используете библиотеку или фреймворк для рисования графики, пожалуйста, пометьте его, если тег существует.

4. Я полагаю, что использую этот класс, написанный моим учителем github.com/asdfasdfasd669/Circles/blob/main/StdDraw.java

5. Итак, вы не можете пометить его тегом, но вы можете добавить это в сам вопрос.