这是我正在制作的游戏的一些代码。
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
有什么方法吗?
答案 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并将新值添加到第二个数组。