是否可以更新Point类的位置?

时间:2018-02-03 14:54:15

标签: java point

我有一个Point字段的粒子。我想抓住这个Point,在它周围创建一个虚构的点(仅整数),并将所有点添加到列表中,只要它们不在列表中{{1} }。这大约是我希望看起来的样子:

getstuck

问题是语法public void pointStuck(Particle particle) { Point ps = particle.getPoint(); for (int i = -3; i < 4; i++) { for (int j = -3; j < 4; j++) { ps += (i,j); if (getstuck.contains(ps) == false) { getstuck.add(ps); } } } } 不起作用,有什么接近我可以使用的吗?

我知道我每次都可以抓住粒子点,然后像这样单独添加ps += (i,j);i;

j

但这会使我的代码效率低下。我只想从Point ps = new Point(particle.getX()+i, particle.getY()+j) 拨打point一次,然后只需为particle更新forloop,而无需再次呼叫point

3 个答案:

答案 0 :(得分:2)

为坐标xy提供设置器。您可以将值设置为已获取的实例,而不是再次创建新实例:

ps.setX(ps.getX() + i);
ps.setY(ps.getY() + j);

请注意,它使该类可变。不再有最终坐标。

声明ps += (i,j);完全不正确。您无法通过(i, j)构建对象。您也无法为+=的{​​{1}}运算符重载。

但是你可以通过静态方法Point绕过运算符重载。它没有多大意义,因为你需要形成第二个参数并传递它。

方法merge(Point a, Point b)不是面向对象的方法。

答案 1 :(得分:1)

如果我们正在讨论<div class="cont"> <div class="help"> <div class="wrapper">CCC</div> </div> <div class="help"> <div class="wrapper">DDD</div> </div> <div class="help"> <div class="wrapper">EEE 1</div> <div class="wrapper">EEE 2</div> <div class="wrapper">EEE 3</div> </div> <!-- Note I'm using a <span> here --> <span class="foo">Hi there.</div> </div>个对象,那么Point对象的x和y字段只是公共字段,因此您可以直接更新Point对象的x和y字段: / p>

java.awt.Point

答案 2 :(得分:0)

您可以通过阅读Point类的Java API文档来回答这些问题。从谷歌搜索&#34; java point&#34;它应该为您提供https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html的链接。

然后向下滚动到字段,您会看到int xint y的说明。由于这些显示在文档中,您自动知道您可以访问它们。要检查它们是公共的还是受保护的,请单击该字段的名称以获取更多详细信息。 When you click on x,你会发现它是公开的。这意味着您可以直接访问它并以您希望的任何方式对其进行修改,如其他答案所示。

在学习如何使用Java编程时,阅读此类文档是一项关键技能。