public boolean isHorizontalOrVertical(Point firstPoint, Point secondPoint) {
return firstPoint.getFirstComponent() == secondPoint.getFirstComponent()
|| firstPoint.getSecondComponent() == secondPoint.getSecondComponent();
}
public boolean isHorizontalOrVertical(List<Point> points) {
if (points == null || points.size() < 2) {
throw new IllegalArgumentException("invalid number of points");
}
Point start = points.get(0);
return points.stream()
.allMatch(p -> isHorizontalOrVertical(start, p));
}
该方法需要检查两个或三个点是否相互垂直/水平。在三个点的情况下,它只需要检查最后两个点是否与起始点水平/垂直。
有人知道我如何把所有的东西都放到一个方法里吗?
首先,也是最重要的,我必须注意到这样一个事实:至少对我来说,计算两个实体是水平的还是垂直的,并且这些实体是点的方法是没有意义的。两个点怎么能是水平的还是垂直的?
克服上述问题,您可以创建一个计算两点是水平还是垂直的单一方法。
更改名称ishorizontalorvertice,因为它是多余的。更好的名字是isHorizontal或isvertical。该方法将返回一个布尔值,因此如果isHorizontal返回false,那么它是垂直的,反之亦然。也许一个更好的名字可以是areTwoPointsHorizontal,但我甚至很难写出来,因为它传达了错误的信息,但请随意选择你自己的名字。
public boolean isHorizontal(Point first, Point second){
boolean sameFirstComponents = firstPoint.getFirstComponent() ==
secondPoint.getFirstComponent();
boolean sameSecondComponents = firstPoint.getSecondComponent() ==
secondPoint.getSecondComponent();
return sameFirstComponents || sameSecondComponents;
}
public boolean isHorizontal(List<Point> points){
boolean allPointsHorizontal = true;
for (int i=0; i<points.size(); i++) {
boolean nextPointExists = i<points.size() - 1;
if (nextPointExists) {
Point current = points.get(i);
Point next = points.get(i+1);
allPointsHorizontal = allPointsHorizontal && isHorizontal(current,next);
if (!allPointsHorizontal)
return false;
}
}
return allPointsHorizontal;
}
问题内容: 是否可以使用Golang以类似的方式工作,例如函数重载或C#中的可选参数?还是另一种方式? 问题答案: 直接支持函数重载和可选参数。您可以解决它们,建立自己的参数结构。我的意思是这样(未经测试,可能无法使用…)编辑:现在已测试…
本文向大家介绍C ++中的构造方法重载,包括了C ++中的构造方法重载的使用技巧和注意事项,需要的朋友参考一下 众所周知,函数重载是面向对象语言的核心功能之一。我们可以使用相同的功能名称;其参数集不同。在这里,我们将看到如何重载C ++类的构造函数。构造函数重载有几个重要概念。 重载的构造函数必须具有相同的名称和不同数量的参数 根据传递的参数的数量和类型来调用构造函数。 我们在创建对象时必须传递参
本文向大家介绍C#中的构造方法重载,包括了C#中的构造方法重载的使用技巧和注意事项,需要的朋友参考一下 如果在同一个类中定义了多个具有相同名称的构造函数,则如果每个构造函数的参数不同,则将它们称为重载。 让我们看一个示例,以学习如何在C#中使用构造函数重载。 在示例中,我们有两个主题和一个“学生姓名”的字符串声明。 我们正在显示三个不同学科的学生的成绩。在我们的示例中,为显示构造函数重载,仅为学生
重载子类中重写的方法,我是重载父方法还是重载子类方法? 我大体上理解什么是超载和超驰。 重载-同一方法在同一个类中有不同的参数和可能的返回类型。 重写-子类中的方法签名与父类中的方法签名相同,但实现不同。 方法B.a(INTX)是重载a.a还是重载B.a?
我正在尝试使用Typescript重载一个方法。Java或C#中通常的重载方式似乎不适用于Typescript。我不能这样做: 我四处搜索,发现我必须这样做: 对我来说,这个方法似乎很不整洁,很难维护,因为我把所有东西都乱七八糟地放在一个方法中,并使用if/ther语句来划分逻辑。 有没有更好的方法可以在Typescript中进行方法重载?
我在超类中有一个重载方法的基本继承情况。 下面的类扩展了上面的类: main方法只是创建一个对象(静态和动态类型)并调用: 最后打印出来 看了这个,我想既然对象的静态和动态类型都是,它会调用Person中的重载方法,该方法将作为参数。由于我显然错了,我打开了一个调试器,假设类中的getWorkDetail(this)行中对“this”的引用一定已经变成了它的超级类。然而,这不是我发现的。 显然,在