我正在尝试检查arraylist中每个多维数据集的冲突,但是结果是,该冲突仅适用于arraylist中的最后一个多维数据集。
public class Cube {
public int x, y;
private boolean conflict = false;
public Cube(int x, int y) {
this.x = x;
this.y = y;
}
public void moveDown() {
if(!conflict("down")) {
this.y += 18;
}
}
public boolean conflict(String dir) {
if(dir.equals("down")) {
for(Cube cubes : Panel.cubes) {
if(this.hashCode() != cubes.hashCode()) {
if(this.y + 18 == cubes.y && this.x == cubes.x || this.y >= Main.height - 18*4) {
this.conflict = true;
} else this.conflict = false;
}
}
}
}
}
答案 0 :(得分:2)
首先,您的冲突方法没有return
,我想知道它是如何编译的。但是问题是发现碰撞时,您永远都不会出没for loop
。
public boolean conflict(String dir) {
if (dir.equals("down")) {
for(Cube cubes : Panel.cubes) {
if(this.hashCode() != cubes.hashCode()) {
if(this.y + 18 == cubes.y && this.x == cubes.x || this.y >= Main.height - 18*4) {
this.conflict = true;
break;
} else {
this.conflict = false;
}
}
}
}
return this.conflict;
}
答案 1 :(得分:1)
当您发现冲突时,您似乎想摆脱循环,因为否则下一次迭代可能会重置该标志(这说明了为什么“冲突仅对arraylist中的最后一个多维数据集起作用”)。
if (dir.equals("down")) {
for(Cube cubes : Panel.cubes) {
if(this.hashCode() != cubes.hashCode()) {
if(this.y + 18 == cubes.y && this.x == cubes.x || this.y >= Main.height - 18*4) {
this.conflict = true;
break;
} else {
this.conflict = false;
}
}
}
}
顺便说一句,您的conflict
方法似乎缺少return语句。