所以我刚刚学习了Java Oracle教程中的varargs,我在阅读这段代码时遇到了麻烦。例如,什么是"(点...角落)"我知道它是(Point []角落的缩短版本)但是" Point&#34 ;?它是一个数组告诉我们我们定义的一些(x,y)坐标吗?另外,我不明白"(角[1] .x)"手段。什么是点符号" .x和.y",以及其他"角落"?对不起所有的问题,我知道它们看起来像是一个愚蠢的问题,但我仍然感谢你的时间。
public Polygon polygonFrom(Point... corners) {
int numberOfSides = corners.length;
double squareOfSide1, lengthOfSide1;
// The "corners" array dot notations below are what confuse me the most.
// There are values stored in each index correct?
//So "corner[1].x could contain element 6 right?
squareOfSide1 = (corners[1].x - corners[0].x)
* (corners[1].x - corners[0].x)
+ (corners[1].y - corners[0].y)
* (corners[1].y - corners[0].y);
lengthOfSide1 = Math.sqrt(squareOfSide1);
// more method body code follows that creates and returns a
// polygon connecting the Points
}
答案 0 :(得分:0)
从教程:
假设Point是一个表示x,y坐标的类
所以,Point
是一个假设的类,如下所示:
class Point {
int x;
int y;
}
Polygon
类是从任意数组的点构造的。语法corners[1].x
返回x
数组中第二个Point
对象上corners
字段的值。
答案 1 :(得分:0)
请注意Point... points
并不是Point[] points
的缩短,实际上第一个只能是函数的最后一个参数,第二个参数可以在任何位置。例如,编写类似以下的函数是合法的
public void foo(Point[] points, int arg2){}
但编写
是不合法的public void foo(Point... points, int arg2){}
回到你的问题,考虑以下Point类(如教程中所指出的):
public class Point
{
public int x;
public int y;
}
然后是Point... corners
一个点数组,然后使用语法corners[i]
(使用i> = 0和i< corners.length)访问数组的第i个元素(请记住数组索引从0开始而不是从1开始。因此,如果您将命令corners[i].x
分解为
Point p = corners[i];
int xcord = p.x
我认为这对你来说更清楚,实际上命令首先取数组的第i个元素而不是该元素的x坐标。
希望一切都清楚。如果你之前从未编程,我建议从java开始。这是一个开始的好地方 - > http://www.tutorialspoint.com/java/