当我自学Java时,我一直在编写像战舰这样的战舰,但我遇到了一个问题,我确保当我创造一艘新船时,我不会添加它,除非所有它的位置值是唯一的。
我做错了,因为我的方法不起作用而且我得到重复的值(或者具有相同位置的船只)。
我有两个ArrayLists:
我检查我要添加到Ship对象的ArrayList中的船只是否具有唯一位置的方法如下:
private boolean hasUniqueLocs(Ship ship) {
for (Ship x : theShips) {
for (String y : ship.shipLocation) {
System.out.println("Checking to see if " + x.shipLocation + " ship contains this value: " + y);
if (x.shipLocation.contains(y)) {
return false;
}
}
}
return true;
}
所以“theShips”是GameController上的Ships字段的ArrayList(使用我的Main方法)。而“shipLocation”是我保存位置的Ship对象上的ArrayList字段。
我的println()语句永远不会运行,所以出于某种原因我永远不会让for循环运行?
感谢您在此提供任何指导或见解!
答案 0 :(得分:1)
好的,我吹了它。我还是新手使用调试器,我应该先去那里,但是我已经习惯了我的代码中的错误,我认为这是问题,并且有一些关于arraylists的东西,我不是理解。
调试之后,我意识到我实际上并没有添加船只直到调用此方法的方法结束 - 所以,正如你们所指出的那样,arraylists中没有任何对象然而。一旦我有这个方向,就很容易看到我的问题。
谢谢大家!