目标是编写代码以确定与(24,5)最接近的x,y坐标。使用具有2个实例变量的公共类PointXY。然后是类外的一个公共方法,它返回最接近(24,5)的点。我知道我做得不对,因为PointXY类型的ArrayList令我感到困惑。提前谢谢你的帮助。
public class CreationDialog : MainPage, IModal
{
public CreationDialog()
{
_Modal = Modal.Get(WindowLocator); //Don't declare new variable
}
IModal _Modal { get; set; }
}
答案 0 :(得分:1)
您正在使用Java。 在Java中 只有课程; 课堂外没有任何东西。
如果您有要共享的代码,并且您不想实例化某个类, 使用静态公共方法。 这是一个例子:
public class KapowThing
{
public static void kapow()
{
System.out.println("Kapow");
}
}
public class MainThing
{
public static void main(final String[] arguments)
{
KapowThing.kapow();
}
}
修改强> 您可以在非公共类中使用公共方法, 但你可能不希望这样,因为非公共类会有 在宣告类之外的有限(可能没有)可见性。
如果课程访问受限, 拥有一个具有更大访问权限的方法很少有意义(如私有类中的公共方法)。 我唯一能做的就是如果我有一个接口和一堆任务特定的工厂,它们都创建了一个实现接口的私有类。 我甚至不确定这可以做到。
以下是一些代码:
package learn.access;
public interface Thingy
{
public void sayHello();
}
package learn.access
import learn.access.p1.MakeP1Thingy;
public class Main
{
public static void main(String[] args)
{
MakeP1Thingy.makeThingy().sayHello();
}
}
package learn.access.p1;
import learn.access.Thingy;
public class MakeP1Thingy
{
public static Thingy makeThingy()
{
return new p1Thingy();
}
}
package learn.access.p1;
import learn.access.Thingy;
// package access class.
class p1Thingy implements Thingy
{
@Override
public void sayHello()
{
System.out.println("p1 hi");
}
}
答案 1 :(得分:0)
这是一种可行的方法。在PointXY
类中添加一个方法,以查找到其他点的距离。
public class PointXY {
private int x;
private int y;
public PointXY(int x, int y) {
this.x = x;
this.y = y;
}
public double distanceTo(PointXY other) {
return Math.hypot(x - other.x, y - other.y);
}
}
然后,在其他课程的代码中,您将能够遍历Collection<PointXY>
,寻找与指定的PointXY
最近的PointXY
。您必须跟踪到目前为止找到的最近点,以及到最近点的距离。
public PointXY closestTo(PointXY target, Collection<PointXY> toChooseFrom) {
double leastDistanceSoFar = 0;
PointXY closestPointSoFar = null;
for (PointXY aPoint : toChooseFrom) {
double thisDistance = target.distanceTo(aPoint);
if (closestPointSoFar == null || thisDistance < leastDistanceSoFar) {
closestPointSoFar = aPoint;
leastDistanceSoFar = thisDistance;
}
}
return closestPointSoFar;
}