比较两个不同的arraylists中的字符串

时间:2014-01-03 22:56:20

标签: java arraylist

当我自学Java时,我一直在编写像战舰这样的战舰,但我遇到了一个问题,我确保当我创造一艘新船时,我不会添加它,除非所有它的位置值是唯一的。

我做错了,因为我的方法不起作用而且我得到重复的值(或者具有相同位置的船只)。

我有两个ArrayLists:

  1. 第一个列表是Ship对象的ArrayList(我的游戏控制器类中的一个字段)
  2. 第二个列表是字符串形式的位置的ArrayList(例如A5,B17等)(这是我的Ship对象上的字段)
  3. 我检查我要添加到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循环运行?

    感谢您在此提供任何指导或见解!

1 个答案:

答案 0 :(得分:1)

好的,我吹了它。我还是新手使用调试器,我应该先去那里,但是我已经习惯了我的代码中的错误,我认为这是问题,并且有一些关于arraylists的东西,我不是理解。

调试之后,我意识到我实际上并没有添加船只直到调用此方法的方法结束 - 所以,正如你们所指出的那样,arraylists中没有任何对象然而。一旦我有这个方向,就很容易看到我的问题。

谢谢大家!