如何添加return语句?

问题描述 投票:-1回答:2

Java的

我想在我的其他课程中访问'dist'。但是我无法这样做,因为变量在方法内。我无法将方法更改为'public double',因此我无法将其置于get-method中。提示?

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    for (Circle circle : circles) {
        circle.draw(g);
        if (selectedCircle != null && selectedCircle == circle) {
            selectedCircle.drawSelected(g);
        }
    }

    for (int i = 0; i < circles.size(); i++) {
        Circle c1 = circles.get(i);
        for (int j = i + 1; j < circles.size(); j++) {
            Circle c2 = circles.get(j);

            double dist = c1.getPoint().distance(c2.getPoint()) + 1;
            double dx = (c2.x - c1.x) / dist / dist;
            double dy = (c2.y - c1.y) / dist / dist;
            c1.x += dx;
            c1.y += dy;
            c2.x -= dx;
            c2.y -= dy;

        }
    }

}
java variables methods return
2个回答
0
投票

如果paintComponent方法以某种方式发生了变化,它将更新您的圈子。它本身不是进行这些改变的地方。因此,第二个循环中的代码应该移动到其他地方,例如,移动到Circle的构造函数和/或moveCircle方法中。在进行这些更改后,系统将调用paintComponent。另外,关于第一个循环,还不清楚selectedCircle会是什么,可能是一个实例变量。如果是这样,不要在循环中绘制它,而只是绘制一次。


0
投票

你可以在你的方法之外移动dist声明并进入类体,然后为你的其他类提供一个getter来利用它。

private double dist;

public double getDist() {
   return dist;
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    for (Circle circle : circles) {
        circle.draw(g);
        if (selectedCircle != null && selectedCircle == circle) {
            selectedCircle.drawSelected(g);
        }
    }

    for (int i = 0; i < circles.size(); i++) {
        Circle c1 = circles.get(i);
        for (int j = i + 1; j < circles.size(); j++) {
            Circle c2 = circles.get(j);

            dist = c1.getPoint().distance(c2.getPoint()) + 1;
            double dx = (c2.x - c1.x) / dist / dist;
            double dy = (c2.y - c1.y) / dist / dist;
            c1.x += dx;
            c1.y += dy;
            c2.x -= dx;
            c2.y -= dy;

        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.