如何添加return语句?

时间:2019-04-14 10:21:50

标签: java variables methods return

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;

        }
    }

}

2 个答案:

答案 0 :(得分:0)

如果您的圈子有所更改,则paintComponent方法将更新您的圈子。并不是自己进行这些更改的地方。因此,第二个循环内的代码应移至其他位置,例如,移至Circle的构造函数和/或moveCircle方法中。完成这些更改后,系统将调用paintComponent。另外,关于第一个循环,尚不清楚selectedCircle是什么,可能是一个实例变量。如果是这样,则不要在循环内绘制它,而只能绘制一次。

答案 1 :(得分:0)

您可以将dist声明移到方法之外,并移到类主体中,然后为其他类提供一个获取器,以利用它进行访问。

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;

        }
    }

}