我有一个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
。
答案 0 :(得分:2)
为坐标x
,y
提供设置器。您可以将值设置为已获取的实例,而不是再次创建新实例:
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 x
和int y
的说明。由于这些显示在文档中,您自动知道您可以访问它们。要检查它们是公共的还是受保护的,请单击该字段的名称以获取更多详细信息。 When you click on x
,你会发现它是公开的。这意味着您可以直接访问它并以您希望的任何方式对其进行修改,如其他答案所示。
在学习如何使用Java编程时,阅读此类文档是一项关键技能。