如何检查数组的元素是否与以前的任何元素相同

时间:2016-01-04 22:26:05

标签: java arrays list

这是我正在制作的游戏的一些代码。

public void compareGuess() {
    black = 0;
    white = 0;
    List<String> previousBoard;
    for (i=0; i<numColours; i++) {
        if(Arrays.asList(mySecret).contains(Board[row][i])) {
            if (Board[row][i].equals(mySecret[i])) {
                black = black + 1;
            } else {
                for (int j=i-1; j>=0; j--) {
                    previousBoard = Arrays.asList(Board[row][j]);
                }
                if (!Board[row][i].contains(previousBoard)) {
                    white = white + 1;
                }
            }
        }
    }

我只对其他问题之后的for语句有困难。我基本上需要检查我当前在Board[row][i]上的元素是否包含以前的任何元素Board[row][i-1]Board[row][i-2]等等,如果没有,那么我需要增加白色的1.

然而,当我运行这个时,我得到错误:

incompatible types: List<String> cannot be converted to CharSequence

有什么方法吗?

2 个答案:

答案 0 :(得分:0)

你不想只想替换

!Board[row][i].contains(previousBoard)

!previousBoard.contains(Board[row][i])

这将检查Board[row][i]是否等于之前的元素之一。我知道你说你想检查“Board [row] [i]是否包含任何前面的元素”但是Board[row][i]是一个String所以我认为你的意思是你要检查Board[row][i]是否是{在前面的元素集中。

此外,我相信根据您的预期功能行

previousBoard = Arrays.asList(Board[row][j]);

不正确。您希望连接列表到previousBoard。所以你应该使用

previousBoard.addAll(Arrays.asList(Board[row][j]));

并使用

初始化add语句上方的previousBoard变量
List<String> previousBoard = new LinkedList<>();

答案 1 :(得分:-1)

您可以创建一个子数组并在每个步骤中测试existens:

1)

Arrays.copyOfRange(Object[] src, int from, int to)

2)

Arrays.asList(someArray).contains(value);

在我看来,您可以创建第二个数组,在每个步骤中检查existens并将新值添加到第二个数组。