3

我正在开发一个 java 项目,需要在两个数组之间打印公共值。

我事先已经按排序顺序打印了两个数组,它们看起来都很好(包含它们应该包含的所有值)。但是,当我遵循最简单的算法时(见下文),即使我可以在两个数组的打印输出中手动看到没有比较的情况下,在执行以下操作后应该打印更多值,我也没有找到所有常见值:

        for(int i=0; i<fibList.size(); i++)
        {
            for(int j=0; j<primeList.size(); j++)
            {
                if(fibList.get(i) == primeList.get(j))
                {
                    System.out.print(" " + fibList.get(i));
                    break;
                }
            }
        }

请让我知道你在想什么。希望这只是一个简单的错误。

4

3 回答 3

4

if(fibList.get(i).equals(primeList.get(j)))可用于。

于 2012-12-04T21:32:01.353 回答
4

您很可能想要:

改变:

if(fibList.get(i) == primeList.get(j))

到:

if(fibList.get(i).equals(primeList.get(j)))
于 2012-12-04T21:32:11.747 回答
4
List<Integer> result = new ArrayList<Integer>(fibList);
result.retainAll(primeList);
for (Integer i : result) {
    System.out.println(i);
}
于 2012-12-04T21:32:34.930 回答